C VS Python benchmarks

Current benchmark data was generated on Wed Jan 22 2025, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][4 cores] AMD EPYC 7763 64-Core Processor (Model 1)

* -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.)

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 1.0ms 0.1ms 1.4MB 0ms 0ms zigcc 0.13.0
c 1.c 1.3ms 0.2ms 2.1MB 0ms 0ms gcc 14.2.0
c 1.c 1.4ms 0.1ms 2.0MB 0ms 0ms clang 14.0.0-1ubuntu1.1
python 1.py 12ms 1.1ms 7.6MB 0ms 0ms pyston 3.8.12
python 1.py 14ms 1.2ms 8.5MB 10ms 0ms cpython 3.13.1
python 1.py 28ms 0.6ms 51.0MB 10ms 8ms pypy 3.10.14

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-m.c 184ms 11ms 26.4MB 420ms 10ms gcc 14.2.0
c 1-m.c 291ms 2.0ms 29.6MB 997ms 27ms clang 14.0.0-1ubuntu1.1
python 3-m.py 2529ms 31ms 138.0MB 8620ms 330ms pypy 3.10.14
python 3-m.py 3123ms 17ms 33.9MB 11820ms 127ms pyston 3.8.12
python 3.py timeout 0.0ms 35.1MB 97ms 13ms cpython 3.13.1

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-m.c 28ms 1.7ms 12.7MB 63ms 0ms gcc 14.2.0
c 1-m.c 39ms 3.6ms 14.9MB 103ms 3ms clang 14.0.0-1ubuntu1.1
python 3-m.py 395ms 0.9ms 15.7MB 1303ms 67ms pyston 3.8.12
python 3-m.py 398ms 3.2ms 77.1MB 1017ms 157ms pypy 3.10.14
python 3-m.py 656ms 8.0ms 17.2MB 2300ms 57ms cpython 3.13.1

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-mffi.c 223ms 18ms 7.6MB 810ms 20ms clang 14.0.0-1ubuntu1.1
c 1-mffi.c 297ms 47ms 6.5MB 860ms 3ms gcc 14.2.0
c 1-ffi.c 433ms 2.9ms 6.0MB 420ms 0ms zigcc 0.13.0
c 1-mffi.c 434ms 2.5ms 6.0MB 420ms 0ms zigcc 0.13.0
c 1-ffi.c 458ms 1.7ms 6.6MB 447ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 541ms 1.6ms 6.7MB 530ms 0ms gcc 14.2.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-mffi.c 16ms 1.8ms 8.5MB 27ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 20ms 0.1ms 3.0MB 10ms 0ms zigcc 0.13.0
c 1-mffi.c 21ms 1.3ms 3.0MB 10ms 0ms zigcc 0.13.0
c 1-mffi.c 22ms 0.4ms 5.6MB 53ms 0ms gcc 14.2.0
c 1-ffi.c 22ms 0.5ms 3.6MB 10ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 25ms 0.1ms 3.8MB 13ms 0ms gcc 14.2.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 8-i.c 246ms 1.0ms 1.5MB 233ms 0ms zigcc 0.13.0
c 5.c 298ms 0.7ms 1.5MB 290ms 0ms zigcc 0.13.0
c 8-i.c 301ms 1.9ms 2.1MB 290ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 311ms 1.5ms 2.3MB 300ms 0ms gcc 14.2.0
c 5.c 311ms 0.3ms 2.3MB 300ms 0ms gcc 14.2.0
c 5.c 315ms 0.3ms 2.1MB 300ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 315ms 1.0ms 1.5MB 303ms 0ms zigcc 0.13.0
c 2.c 317ms 2.6ms 2.1MB 307ms 0ms clang 14.0.0-1ubuntu1.1
c 8-i.c 332ms 0.9ms 2.3MB 320ms 0ms gcc 14.2.0
python 2.py 1366ms 23ms 59.8MB 1340ms 10ms pypy 3.10.14
python 1.py 2633ms 17ms 56.6MB 2607ms 13ms pypy 3.10.14
python 1.py timeout 0.0ms 8.6MB 4983ms 3ms cpython 3.13.1
python 2.py timeout 0.0ms 8.8MB 4990ms 0ms cpython 3.13.1
python 1.py timeout 0.0ms 8.3MB 4983ms 3ms pyston 3.8.12
python 2.py timeout 0.0ms 8.1MB 4987ms 0ms pyston 3.8.12

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 8-i.c 26ms 0.1ms 1.5MB 20ms 0ms zigcc 0.13.0
c 5.c 32ms 0.2ms 1.5MB 20ms 0ms zigcc 0.13.0
c 8-i.c 32ms 0.6ms 2.1MB 23ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 33ms 0.3ms 1.5MB 20ms 0ms zigcc 0.13.0
c 2.c 33ms 0.1ms 2.3MB 23ms 0ms gcc 14.2.0
c 5.c 33ms 0.1ms 2.1MB 27ms 0ms clang 14.0.0-1ubuntu1.1
c 5.c 34ms 0.3ms 2.3MB 27ms 0ms gcc 14.2.0
c 8-i.c 35ms 0.1ms 2.3MB 27ms 0ms gcc 14.2.0
c 2.c 36ms 3.1ms 2.1MB 27ms 0ms clang 14.0.0-1ubuntu1.1
python 2.py 177ms 2.3ms 57.6MB 150ms 13ms pypy 3.10.14
python 1.py 306ms 2.6ms 56.6MB 280ms 10ms pypy 3.10.14
python 1.py 921ms 5.6ms 8.3MB 907ms 0ms pyston 3.8.12
python 2.py 1297ms 37ms 8.3MB 1283ms 0ms pyston 3.8.12
python 1.py 2982ms 117ms 8.6MB 2973ms 0ms cpython 3.13.1
python 2.py 3119ms 42ms 8.8MB 3103ms 0ms cpython 3.13.1

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 257ms 1.9ms 40.9MB 240ms 0ms gcc 14.2.0
c 1.c 267ms 2.2ms 41.0MB 247ms 3ms clang 14.0.0-1ubuntu1.1
c 1.c 292ms 2.5ms 40.3MB 273ms 3ms zigcc 0.13.0
python 1.py 2562ms 34ms 369.0MB 2500ms 47ms pypy 3.10.14
python 2.py 3081ms 166ms 632.9MB 2897ms 163ms pyston 3.8.12
python 1.py 4831ms 35ms 320.4MB 4770ms 47ms pyston 3.8.12
python 1.py timeout 0.0ms 321.1MB 4960ms 27ms cpython 3.13.1
python 2.py timeout 0.0ms 633.7MB 4817ms 167ms cpython 3.13.1
python 2.py timeout 0.0ms 959.2MB 4713ms 273ms pypy 3.10.14

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 49ms 1.7ms 11.6MB 40ms 0ms gcc 14.2.0
c 1.c 51ms 2.0ms 11.7MB 37ms 0ms clang 14.0.0-1ubuntu1.1
c 1.c 54ms 2.1ms 11.0MB 40ms 0ms zigcc 0.13.0
python 1.py 541ms 4.6ms 134.6MB 507ms 17ms pypy 3.10.14
python 2.py 721ms 1.2ms 164.2MB 683ms 17ms pyston 3.8.12
python 1.py 1162ms 45ms 86.0MB 1130ms 13ms pyston 3.8.12
python 2.py 1435ms 3.2ms 164.8MB 1390ms 27ms cpython 3.13.1
python 2.py 1571ms 24ms 289.8MB 1473ms 80ms pypy 3.10.14
python 1.py 2724ms 28ms 86.8MB 2693ms 13ms cpython 3.13.1

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 6-im.c 969ms 4.6ms 4.1MB 3777ms 0ms gcc 14.2.0
c 4-m.c 976ms 6.3ms 4.1MB 3807ms 0ms gcc 14.2.0
c 6-im.c 1005ms 2.0ms 5.3MB 3930ms 3ms clang 14.0.0-1ubuntu1.1
c 5-im.c 1102ms 12ms 4.1MB 4300ms 0ms gcc 14.2.0
c 4-m.c 1121ms 6.6ms 5.2MB 4377ms 3ms clang 14.0.0-1ubuntu1.1
c 5-im.c 1349ms 29ms 7.3MB 5250ms 7ms clang 14.0.0-1ubuntu1.1
c 3-m.c 1870ms 63ms 7.2MB 7260ms 3ms clang 14.0.0-1ubuntu1.1
c 3-m.c 1983ms 19ms 4.1MB 7780ms 3ms gcc 14.2.0
python 8.py timeout 0.0ms 16.6MB 63ms 0ms cpython 3.13.1
python 8.py timeout 0.0ms 99.4MB 853ms 167ms pypy 3.10.14
python 8.py timeout 0.0ms 18.1MB 77ms 17ms pyston 3.8.12

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 4-m.c 253ms 0.8ms 4.1MB 963ms 0ms gcc 14.2.0
c 6-im.c 256ms 5.0ms 4.0MB 970ms 0ms gcc 14.2.0
c 6-im.c 263ms 9.0ms 5.3MB 977ms 3ms clang 14.0.0-1ubuntu1.1
c 5-im.c 291ms 13ms 4.0MB 1097ms 0ms gcc 14.2.0
c 4-m.c 292ms 5.9ms 7.0MB 1100ms 3ms clang 14.0.0-1ubuntu1.1
c 5-im.c 363ms 27ms 5.3MB 1363ms 3ms clang 14.0.0-1ubuntu1.1
c 3-m.c 474ms 12ms 7.2MB 1800ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 504ms 4.5ms 4.0MB 1957ms 0ms gcc 14.2.0
python 8.py timeout 0.0ms 16.5MB 113ms 17ms cpython 3.13.1
python 8.py timeout 0.0ms 99.1MB 1567ms 470ms pypy 3.10.14
python 8.py timeout 0.0ms 17.6MB 137ms 33ms pyston 3.8.12

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 6-im.c 72ms 2.5ms 4.0MB 250ms 0ms gcc 14.2.0
c 6-im.c 72ms 0.6ms 7.3MB 240ms 0ms clang 14.0.0-1ubuntu1.1
c 4-m.c 77ms 7.1ms 4.0MB 263ms 0ms gcc 14.2.0
c 4-m.c 80ms 0.6ms 5.2MB 273ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 80ms 0.7ms 4.0MB 280ms 0ms gcc 14.2.0
c 5-im.c 94ms 2.4ms 5.5MB 330ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 124ms 0.9ms 5.1MB 443ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 133ms 1.5ms 4.0MB 493ms 0ms gcc 14.2.0
python 8-m.py 2021ms 18ms 94.9MB 6423ms 333ms pypy 3.10.14
python 8.py timeout 0.0ms 16.1MB 233ms 53ms cpython 3.13.1
python 8.py timeout 0.0ms 15.5MB 447ms 113ms pyston 3.8.12