C++ VS Python benchmarks

Current benchmark data was generated on Wed May 25 2022, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz (Model 85)

* -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 679ms 11ms 1.0MB 1237ms 3ms g++ 12.1.0
cpp 1-im.cpp 688ms 11ms 3.6MB 1337ms 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 67ms 5.0ms 3.6MB 110ms 0ms clang++ 11.0.0
cpp 1-im.cpp 69ms 1.8ms 1.0MB 100ms 0ms g++ 12.1.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 1.8ms 0.7ms 1.0MB 0ms 0ms g++ 12.1.0
cpp 1.cpp 2.8ms 0.8ms 1.0MB 0ms 0ms clang++ 11.0.0
python 1.py 14ms 1.8ms 7.6MB 10ms 0ms pyston 3.8.12
python 1.py 16ms 2.8ms 7.3MB 10ms 0ms cpython 3.10.4
python 1.py 37ms 1.1ms 54.6MB 12ms 10ms 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 167ms 0.4ms 0.9MB 160ms 0ms g++ 12.1.0
cpp 0-i.cpp 212ms 0.4ms 1.1MB 200ms 0ms clang++ 11.0.0
cpp 1.cpp 307ms 5.8ms 0.9MB 293ms 0ms g++ 12.1.0
cpp 1.cpp 392ms 6.8ms 1.1MB 383ms 0ms clang++ 11.0.0
python 2.py 2271ms 62ms 74.5MB 2243ms 13ms pypy 3.8.13
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.4
python 2.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.4
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 21ms 1.0ms 0.9MB 10ms 0ms g++ 12.1.0
cpp 0-i.cpp 24ms 1.9ms 1.1MB 13ms 0ms clang++ 11.0.0
cpp 1.cpp 33ms 0.1ms 0.9MB 20ms 0ms g++ 12.1.0
cpp 1.cpp 42ms 0.3ms 1.1MB 30ms 0ms clang++ 11.0.0
python 2.py 294ms 5.0ms 74.1MB 253ms 27ms pypy 3.8.13
python 1.py 583ms 1.7ms 73.4MB 557ms 13ms pypy 3.8.13
python 1.py 1420ms 106ms 8.7MB 1407ms 0ms pyston 3.8.12
python 2.py 2057ms 12ms 8.5MB 2043ms 0ms pyston 3.8.12
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.4
python 2.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.4

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 369ms 18ms 7.4MB 357ms 0ms clang++ 11.0.0
cpp 1.cpp 578ms 2.4ms 7.7MB 567ms 0ms g++ 12.1.0
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.4
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

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 78ms 5.3ms 3.7MB 67ms 0ms clang++ 11.0.0
cpp 1.cpp 138ms 9.6ms 4.0MB 130ms 0ms g++ 12.1.0
python 1.py 1357ms 20ms 209.6MB 1277ms 70ms pypy 3.8.13
python 1.py 2822ms 61ms 86.4MB 2770ms 37ms pyston 3.8.12
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.4

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 7-m.cpp 885ms 14ms 3.2MB 1717ms 0ms clang++ 11.0.0
cpp 8-m.cpp 885ms 14ms 3.2MB 1723ms 0ms clang++ 11.0.0
cpp 7-m.cpp 886ms 13ms 1.0MB 1707ms 0ms g++ 12.1.0
cpp 8-m.cpp 905ms 2.6ms 0.9MB 1763ms 0ms g++ 12.1.0
cpp 6-im.cpp 1804ms 22ms 3.2MB 3530ms 10ms clang++ 11.0.0
cpp 6-im.cpp 1808ms 11ms 0.9MB 3423ms 7ms g++ 12.1.0
python 8.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.4
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 7-m.cpp 226ms 6.2ms 3.2MB 413ms 0ms clang++ 11.0.0
cpp 7-m.cpp 230ms 6.3ms 1.0MB 420ms 0ms g++ 12.1.0
cpp 8-m.cpp 232ms 6.2ms 3.1MB 433ms 0ms clang++ 11.0.0
cpp 8-m.cpp 236ms 1.3ms 1.0MB 440ms 0ms g++ 12.1.0
cpp 6-im.cpp 462ms 2.2ms 1.0MB 877ms 0ms g++ 12.1.0
cpp 6-im.cpp 470ms 2.8ms 3.2MB 897ms 0ms clang++ 11.0.0
python 8.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.4
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 7-m.cpp 63ms 1.6ms 3.1MB 103ms 0ms clang++ 11.0.0
cpp 7-m.cpp 63ms 1.3ms 0.9MB 103ms 0ms g++ 12.1.0
cpp 8-m.cpp 65ms 1.8ms 3.2MB 110ms 0ms clang++ 11.0.0
cpp 8-m.cpp 67ms 1.8ms 1.0MB 110ms 0ms g++ 12.1.0
cpp 6-im.cpp 123ms 2.8ms 0.9MB 220ms 0ms g++ 12.1.0
cpp 6-im.cpp 127ms 3.0ms 3.1MB 223ms 0ms clang++ 11.0.0
python 8-m.py 4206ms 35ms 105.3MB 7317ms 397ms pypy 3.8.13
python 8.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.4
python 8.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12