C++ VS Python benchmarks

Current benchmark data was generated on Sat Jan 28 2023, 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 756ms 13ms 1.4MB 1457ms 0ms g++ 12.2.0
cpp 1-im.cpp 763ms 5.8ms 4.0MB 1487ms 0ms clang++ 14.0.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1-im.cpp 70ms 0.3ms 1.4MB 117ms 0ms g++ 12.2.0
cpp 1-im.cpp 72ms 1.8ms 4.0MB 123ms 0ms clang++ 14.0.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 1.7ms 0.8ms 2.4MB 0ms 0ms g++ 12.2.0
cpp 1.cpp 2.1ms 0.6ms 1.4MB 0ms 0ms clang++ 14.0.0
python 1.py 13ms 0.4ms 7.3MB 10ms 0ms pyston 3.8.12
python 1.py 14ms 1.4ms 8.4MB 10ms 0ms cpython 3.11.1
python 1.py 38ms 3.1ms 51.6MB 14ms 10ms pypy 3.9.16

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 225ms 0.5ms 1.3MB 213ms 0ms g++ 12.2.0
cpp 0-i.cpp 255ms 3.2ms 1.4MB 240ms 0ms clang++ 14.0.0
cpp 1.cpp 326ms 1.8ms 1.4MB 313ms 0ms clang++ 14.0.0
cpp 1.cpp 341ms 1.0ms 1.3MB 330ms 0ms g++ 12.2.0
python 2.py 2692ms 149ms 77.4MB 2660ms 13ms pypy 3.9.16
python 1.py 3533ms 41ms 76.5MB 3500ms 17ms pypy 3.9.16
python 1.py timeout 0.0ms 8.4MB 4983ms 0ms cpython 3.11.1
python 2.py timeout 0.0ms 8.6MB 4990ms 0ms cpython 3.11.1
python 1.py timeout 0.0ms 8.4MB 4977ms 3ms pyston 3.8.12
python 2.py timeout 0.0ms 8.0MB 4990ms 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 25ms 0.0ms 1.3MB 17ms 0ms g++ 12.2.0
cpp 0-i.cpp 29ms 2.1ms 1.4MB 20ms 0ms clang++ 14.0.0
cpp 1.cpp 36ms 0.8ms 1.4MB 27ms 0ms clang++ 14.0.0
cpp 1.cpp 36ms 0.4ms 1.4MB 30ms 0ms g++ 12.2.0
python 2.py 305ms 26ms 77.0MB 277ms 10ms pypy 3.9.16
python 1.py 400ms 3.4ms 76.4MB 373ms 10ms pypy 3.9.16
python 1.py 1193ms 1.0ms 8.3MB 1180ms 0ms pyston 3.8.12
python 2.py 1636ms 28ms 7.9MB 1623ms 0ms pyston 3.8.12
python 2.py 3404ms 24ms 8.6MB 3393ms 0ms cpython 3.11.1
python 1.py 3437ms 149ms 8.4MB 3423ms 0ms cpython 3.11.1

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 644ms 12ms 7.8MB 633ms 0ms g++ 12.2.0
cpp 1.cpp 711ms 5.6ms 7.7MB 697ms 0ms clang++ 14.0.0
python 1.py 4480ms 211ms 389.1MB 4330ms 133ms pypy 3.9.16
python 1.py timeout 0.0ms 321.1MB 4937ms 50ms cpython 3.11.1
python 2.py timeout 0.0ms 633.6MB 4690ms 293ms cpython 3.11.1
python 2.py timeout 0.0ms 1013.7MB 4620ms 360ms pypy 3.9.16
python 1.py timeout 0.0ms 320.5MB 4897ms 87ms pyston 3.8.12
python 2.py timeout 0.0ms 633.2MB 4577ms 403ms pyston 3.8.12

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 154ms 2.5ms 4.0MB 143ms 0ms g++ 12.2.0
cpp 1.cpp 169ms 0.6ms 4.0MB 160ms 0ms clang++ 14.0.0
python 1.py 1085ms 58ms 213.2MB 1033ms 37ms pypy 3.9.16
python 2.py 1345ms 7.3ms 164.4MB 1253ms 70ms pyston 3.8.12
python 2.py 1668ms 7.8ms 164.8MB 1593ms 60ms cpython 3.11.1
python 1.py 1746ms 35ms 86.1MB 1713ms 20ms pyston 3.8.12
python 2.py 1769ms 128ms 266.8MB 1623ms 123ms pypy 3.9.16
python 1.py 2971ms 17ms 86.7MB 2933ms 20ms cpython 3.11.1

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 7-m.cpp 1059ms 3.0ms 3.3MB 2077ms 0ms clang++ 14.0.0
cpp 7-m.cpp 1061ms 5.4ms 1.3MB 2080ms 0ms g++ 12.2.0
cpp 8-m.cpp 1065ms 0.4ms 1.4MB 2080ms 0ms g++ 12.2.0
cpp 8-m.cpp 1069ms 14ms 3.5MB 2080ms 0ms clang++ 14.0.0
cpp 6-im.cpp 2223ms 8.8ms 3.3MB 4353ms 3ms clang++ 14.0.0
cpp 6-im.cpp 2238ms 14ms 1.3MB 4390ms 0ms g++ 12.2.0
python 8.py timeout 0.0ms 16.5MB 57ms 7ms cpython 3.11.1
python 8.py timeout 0.0ms 105.2MB 717ms 120ms pypy 3.9.16
python 8.py timeout 0.0ms 17.7MB 57ms 23ms pyston 3.8.12

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 7-m.cpp 273ms 0.1ms 3.4MB 520ms 0ms clang++ 14.0.0
cpp 8-m.cpp 274ms 0.9ms 1.4MB 520ms 0ms g++ 12.2.0
cpp 7-m.cpp 275ms 2.4ms 1.3MB 520ms 0ms g++ 12.2.0
cpp 8-m.cpp 276ms 3.9ms 3.3MB 517ms 0ms clang++ 14.0.0
cpp 6-im.cpp 562ms 1.6ms 3.5MB 1087ms 0ms clang++ 14.0.0
cpp 6-im.cpp 566ms 3.0ms 1.4MB 1097ms 0ms g++ 12.2.0
python 8.py timeout 0.0ms 18.2MB 113ms 10ms cpython 3.11.1
python 8.py timeout 0.0ms 107.0MB 1267ms 210ms pypy 3.9.16
python 8.py timeout 0.0ms 17.2MB 160ms 20ms pyston 3.8.12

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 7-m.cpp 75ms 0.9ms 1.3MB 130ms 0ms g++ 12.2.0
cpp 7-m.cpp 76ms 2.0ms 3.3MB 130ms 0ms clang++ 14.0.0
cpp 8-m.cpp 76ms 1.2ms 3.3MB 127ms 0ms clang++ 14.0.0
cpp 8-m.cpp 78ms 4.9ms 1.3MB 130ms 0ms g++ 12.2.0
cpp 6-im.cpp 149ms 0.8ms 3.3MB 270ms 0ms clang++ 14.0.0
cpp 6-im.cpp 151ms 1.5ms 1.3MB 277ms 0ms g++ 12.2.0
python 8-m.py 3558ms 133ms 107.0MB 6063ms 373ms pypy 3.9.16
python 8.py timeout 0.0ms 15.9MB 243ms 30ms cpython 3.11.1
python 8.py timeout 0.0ms 17.1MB 357ms 73ms pyston 3.8.12