C++ VS Python benchmarks

Current benchmark data was generated on Mon Oct 03 2022, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz (Model 106)

* -m in a file name stands for multi-threading or multi-processing

* -i in a file name stands for direct intrinsics usage. (Usage of simd intrinsics via libraries is not counted)

* -ffi in a file name stands for non-stdlib FFI usage

* (You may find time < time(user) + time(sys) for some non-parallelized programs, the overhead is from GC or JIT compiler, which are allowed to take advantage of multi-cores as that's more close to real-world scenarios.)

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1-im.cpp 753ms 4.3ms 1.0MB 1460ms 0ms g++ 12.2.0
cpp 1-im.cpp 772ms 3.1ms 3.5MB 1500ms 0ms clang++ 11.0.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1-im.cpp 72ms 1.9ms 1.0MB 120ms 0ms g++ 12.2.0
cpp 1-im.cpp 74ms 3.1ms 3.5MB 123ms 0ms clang++ 11.0.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 2.4ms 0.6ms 1.1MB 0ms 0ms clang++ 11.0.0
cpp 1.cpp 3.1ms 2.0ms 1.0MB 0ms 0ms g++ 12.2.0
python 1.py 14ms 0.8ms 7.3MB 10ms 0ms pyston 3.8.12
python 1.py 14ms 0.6ms 7.6MB 10ms 0ms cpython 3.10.7
python 1.py 32ms 0.6ms 54.9MB 16ms 2ms pypy 3.8.13

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 226ms 1.0ms 0.9MB 220ms 0ms g++ 12.2.0
cpp 0-i.cpp 258ms 1.2ms 1.1MB 247ms 0ms clang++ 11.0.0
cpp 1.cpp 339ms 0.7ms 1.0MB 330ms 0ms g++ 12.2.0
cpp 1.cpp 384ms 0.4ms 1.1MB 370ms 0ms clang++ 11.0.0
python 2.py 1898ms 18ms 79.9MB 1873ms 10ms pypy 3.8.13
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 2.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 1.py timeout 0.0ms 0.0MB 0ms 0ms pypy 3.8.13
python 1.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12
python 2.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 26ms 1.3ms 1.0MB 13ms 0ms g++ 12.2.0
cpp 0-i.cpp 29ms 0.6ms 1.1MB 20ms 0ms clang++ 11.0.0
cpp 1.cpp 37ms 0.7ms 1.0MB 30ms 0ms g++ 12.2.0
cpp 1.cpp 41ms 0.2ms 1.1MB 30ms 0ms clang++ 11.0.0
python 2.py 249ms 3.9ms 79.8MB 220ms 10ms pypy 3.8.13
python 1.py 560ms 16ms 79.4MB 523ms 13ms pypy 3.8.13
python 1.py 1195ms 5.3ms 8.3MB 1180ms 0ms pyston 3.8.12
python 2.py 1583ms 1.2ms 8.2MB 1570ms 0ms pyston 3.8.12
python 1.py 4606ms 4.4ms 7.2MB 4597ms 0ms cpython 3.10.7
python 2.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 419ms 3.4ms 7.5MB 407ms 0ms clang++ 11.0.0
cpp 1.cpp 644ms 2.2ms 7.7MB 630ms 0ms g++ 12.2.0
python 1.py 3979ms 12ms 391.6MB 3850ms 110ms pypy 3.8.13
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 1.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 94ms 0.3ms 3.7MB 80ms 0ms clang++ 11.0.0
cpp 1.cpp 153ms 0.3ms 4.0MB 143ms 0ms g++ 12.2.0
python 1.py 985ms 51ms 215.7MB 930ms 37ms pypy 3.8.13
python 1.py 1795ms 29ms 86.0MB 1750ms 27ms pyston 3.8.12
python 1.py 4178ms 13ms 85.9MB 4140ms 23ms cpython 3.10.7

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 8-m.cpp 1061ms 1.3ms 3.1MB 2073ms 0ms clang++ 11.0.0
cpp 7-m.cpp 1061ms 3.4ms 3.2MB 2073ms 3ms clang++ 11.0.0
cpp 7-m.cpp 1062ms 2.6ms 0.9MB 2083ms 0ms g++ 12.2.0
cpp 8-m.cpp 1063ms 0.8ms 0.9MB 2077ms 0ms g++ 12.2.0
cpp 6-im.cpp 2243ms 24ms 3.2MB 4400ms 0ms clang++ 11.0.0
cpp 6-im.cpp 2243ms 21ms 1.0MB 4400ms 0ms g++ 12.2.0
python 8.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 8.py timeout 0.0ms 0.0MB 0ms 0ms pypy 3.8.13
python 8.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 8-m.cpp 276ms 1.4ms 3.2MB 517ms 0ms clang++ 11.0.0
cpp 7-m.cpp 279ms 4.6ms 0.9MB 523ms 0ms g++ 12.2.0
cpp 8-m.cpp 279ms 3.6ms 0.9MB 520ms 0ms g++ 12.2.0
cpp 7-m.cpp 279ms 5.3ms 3.2MB 520ms 0ms clang++ 11.0.0
cpp 6-im.cpp 567ms 1.3ms 1.0MB 1100ms 0ms g++ 12.2.0
cpp 6-im.cpp 568ms 1.5ms 3.2MB 1097ms 0ms clang++ 11.0.0
python 8.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 8.py timeout 0.0ms 0.0MB 0ms 0ms pypy 3.8.13
python 8.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 8-m.cpp 76ms 1.1ms 3.2MB 130ms 0ms clang++ 11.0.0
cpp 7-m.cpp 76ms 0.8ms 1.0MB 130ms 0ms g++ 12.2.0
cpp 7-m.cpp 76ms 2.1ms 3.2MB 130ms 0ms clang++ 11.0.0
cpp 8-m.cpp 77ms 1.9ms 1.0MB 130ms 0ms g++ 12.2.0
cpp 6-im.cpp 150ms 0.2ms 3.2MB 277ms 0ms clang++ 11.0.0
cpp 6-im.cpp 151ms 1.4ms 1.0MB 280ms 0ms g++ 12.2.0
python 8-m.py 3224ms 95ms 109.9MB 5487ms 373ms pypy 3.8.13
python 8.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 8.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12