Python VS C benchmarks

Current benchmark data was generated on Mon Dec 30 2024, 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.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 1166ms 9.2ms 95.7MB 1100ms 50ms pypy 3.10.14
python 1.py timeout 0.0ms 40.9MB 4967ms 17ms cpython 3.13.1
python 1.py timeout 0.0ms 40.5MB 4760ms 223ms pyston 3.8.12

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 96ms 2.2ms 67.9MB 63ms 20ms pypy 3.10.14
python 1.py 474ms 5.7ms 11.9MB 450ms 7ms pyston 3.8.12
python 1.py 709ms 7.3ms 12.6MB 697ms 0ms cpython 3.13.1

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 1177ms 7.4ms 102.5MB 1120ms 40ms pypy 3.10.14
python 1.py timeout 0.0ms 21.3MB 4973ms 7ms cpython 3.13.1
python 1.py timeout 0.0ms 17.3MB 4980ms 3ms pyston 3.8.12

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 218ms 5.6ms 84.5MB 167ms 37ms pypy 3.10.14
python 1.py 587ms 33ms 20.5MB 567ms 3ms cpython 3.13.1
python 1.py 656ms 19ms 16.8MB 630ms 3ms pyston 3.8.12

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 246ms 0.5ms 82.9MB 210ms 17ms pypy 3.10.14
python 1.py 360ms 0.4ms 12.5MB 343ms 3ms cpython 3.13.1
python 1.py 1994ms 2.7ms 9.6MB 1980ms 0ms pyston 3.8.12

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 97ms 0.8ms 62.8MB 77ms 10ms pypy 3.10.14
python 1.py 112ms 5.9ms 12.0MB 100ms 0ms cpython 3.13.1
python 1.py 345ms 0.6ms 8.8MB 330ms 0ms pyston 3.8.12

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 1896ms 11ms 88.3MB 1847ms 33ms pypy 3.10.14
python 5-m.py 2474ms 26ms 12.5MB 3627ms 973ms pyston 3.8.12
python 5-m.py 2831ms 4.6ms 64.9MB 4040ms 807ms pypy 3.10.14
python 1.py 2999ms 24ms 8.1MB 2983ms 0ms pyston 3.8.12
python 5-m.py 3390ms 14ms 13.9MB 4597ms 887ms cpython 3.13.1
python 1.py 4550ms 39ms 8.6MB 4537ms 0ms cpython 3.13.1

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 252ms 5.8ms 63.5MB 227ms 17ms pypy 3.10.14
python 1.py 310ms 1.9ms 8.1MB 297ms 0ms pyston 3.8.12
python 5-m.py 311ms 4.2ms 12.5MB 410ms 137ms pyston 3.8.12
python 5-m.py 397ms 2.8ms 13.8MB 483ms 127ms cpython 3.13.1
python 1.py 494ms 18ms 8.6MB 480ms 0ms cpython 3.13.1
python 5-m.py 539ms 0.3ms 65.0MB 810ms 283ms pypy 3.10.14

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 1.0ms 0.0ms 1.4MB 0ms 0ms zigcc 0.13.0
c 1.c 1.3ms 0.1ms 2.1MB 0ms 0ms gcc 14.2.0
c 1.c 1.4ms 0.2ms 2.1MB 0ms 0ms clang 14.0.0-1ubuntu1.1
python 1.py 11ms 1.0ms 7.6MB 0ms 0ms pyston 3.8.12
python 1.py 13ms 1.3ms 8.6MB 10ms 0ms cpython 3.13.1
python 1.py 28ms 0.7ms 51.0MB 10ms 8ms pypy 3.10.14

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 2122ms 18ms 36.4MB 1073ms 1570ms pyston 3.8.12
python 1.py 2389ms 181ms 33.4MB 1510ms 1657ms cpython 3.13.1
python 1.py 4757ms 102ms 107.1MB 2770ms 1207ms pypy 3.10.14

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 1147ms 80ms 28.7MB 303ms 280ms cpython 3.13.1
python 1.py 1183ms 95ms 31.0MB 233ms 270ms pyston 3.8.12
python 1.py 1563ms 329ms 89.5MB 690ms 227ms pypy 3.10.14

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 192ms 1.0ms 38.7MB 160ms 20ms pyston 3.8.12
python 1.py 215ms 5.5ms 38.6MB 193ms 7ms cpython 3.13.1
python 1.py 292ms 3.8ms 87.3MB 250ms 30ms pypy 3.10.14

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 1817ms 12ms 220.5MB 1627ms 177ms pyston 3.8.12
python 1.py 1901ms 12ms 221.8MB 1813ms 73ms pypy 3.10.14
python 1.py 1904ms 4.2ms 221.4MB 1823ms 67ms cpython 3.13.1

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-m.c 175ms 2.8ms 26.5MB 410ms 10ms gcc 14.2.0
c 1-m.c 303ms 7.0ms 27.7MB 1030ms 30ms clang 14.0.0-1ubuntu1.1
python 3-m.py 2278ms 16ms 137.7MB 7713ms 340ms pypy 3.10.14
python 3-m.py 3081ms 29ms 34.0MB 11623ms 120ms pyston 3.8.12
python 3.py timeout 0.0ms 35.2MB 90ms 23ms 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.2ms 12.8MB 63ms 0ms gcc 14.2.0
c 1-m.c 37ms 0.9ms 14.9MB 107ms 3ms clang 14.0.0-1ubuntu1.1
python 3-m.py 377ms 2.5ms 77.5MB 937ms 173ms pypy 3.10.14
python 3-m.py 392ms 3.6ms 17.7MB 1273ms 83ms pyston 3.8.12
python 3-m.py 645ms 2.8ms 17.1MB 2247ms 77ms cpython 3.13.1

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 2.py 147ms 1.4ms 57.9MB 123ms 10ms pypy 3.10.14
python 1.py 178ms 5.0ms 59.5MB 153ms 10ms pypy 3.10.14
python 1.py 726ms 18ms 8.9MB 713ms 0ms pyston 3.8.12
python 2.py 833ms 14ms 8.5MB 827ms 0ms pyston 3.8.12
python 1.py 1123ms 16ms 9.4MB 1113ms 0ms cpython 3.13.1
python 2.py 1312ms 12ms 9.0MB 1300ms 0ms cpython 3.13.1

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 2.py 345ms 7.5ms 58.9MB 317ms 13ms pypy 3.10.14
python 1.py 374ms 2.4ms 60.4MB 347ms 10ms pypy 3.10.14
python 1.py 2112ms 9.0ms 8.9MB 2097ms 0ms pyston 3.8.12
python 2.py 2470ms 27ms 8.5MB 2453ms 0ms pyston 3.8.12
python 1.py 3297ms 22ms 9.4MB 3280ms 0ms cpython 3.13.1
python 2.py 3873ms 38ms 9.0MB 3857ms 3ms cpython 3.13.1

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 2.py 104ms 2.3ms 57.8MB 77ms 10ms pypy 3.10.14
python 1.py 119ms 0.8ms 58.5MB 90ms 13ms pypy 3.10.14
python 1.py 342ms 1.9ms 8.5MB 330ms 0ms pyston 3.8.12
python 2.py 384ms 1.2ms 8.1MB 370ms 0ms pyston 3.8.12
python 1.py 527ms 8.2ms 9.0MB 510ms 0ms cpython 3.13.1
python 2.py 638ms 14ms 8.6MB 623ms 0ms cpython 3.13.1

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 2228ms 12ms 210.0MB 2107ms 107ms pypy 3.10.14
python 1.py timeout 0.0ms 93.9MB 4957ms 30ms cpython 3.13.1
python 1.py timeout 0.0ms 130.4MB 4930ms 50ms pyston 3.8.12

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 381ms 4.2ms 103.6MB 330ms 37ms pypy 3.10.14
python 1.py 2924ms 26ms 36.9MB 2890ms 20ms cpython 3.13.1
python 1.py timeout 0.0ms 48.8MB 4940ms 40ms pyston 3.8.12

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 8-i.c 246ms 1.1ms 1.5MB 233ms 0ms zigcc 0.13.0
c 5.c 298ms 0.5ms 1.5MB 290ms 0ms zigcc 0.13.0
c 8-i.c 300ms 0.7ms 2.1MB 290ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 309ms 1.2ms 2.3MB 300ms 0ms gcc 14.2.0
c 2.c 311ms 1.6ms 1.5MB 300ms 0ms zigcc 0.13.0
c 5.c 311ms 0.5ms 2.3MB 300ms 0ms gcc 14.2.0
c 5.c 314ms 1.7ms 2.1MB 310ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 325ms 14ms 2.1MB 313ms 0ms clang 14.0.0-1ubuntu1.1
c 8-i.c 332ms 1.3ms 2.3MB 320ms 0ms gcc 14.2.0
python 2.py 1353ms 12ms 59.9MB 1337ms 3ms pypy 3.10.14
python 1.py 2633ms 14ms 56.6MB 2607ms 13ms pypy 3.10.14
python 1.py timeout 0.0ms 8.6MB 4990ms 0ms cpython 3.13.1
python 2.py timeout 0.0ms 8.8MB 4987ms 0ms cpython 3.13.1
python 1.py timeout 0.0ms 8.3MB 4983ms 0ms pyston 3.8.12
python 2.py timeout 0.0ms 8.1MB 4983ms 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 27ms 0.5ms 1.5MB 20ms 0ms zigcc 0.13.0
c 5.c 32ms 0.4ms 1.5MB 20ms 0ms zigcc 0.13.0
c 8-i.c 33ms 0.6ms 2.1MB 23ms 0ms clang 14.0.0-1ubuntu1.1
c 5.c 33ms 0.0ms 2.3MB 27ms 0ms gcc 14.2.0
c 2.c 33ms 0.4ms 2.3MB 23ms 0ms gcc 14.2.0
c 2.c 34ms 0.3ms 1.5MB 27ms 0ms zigcc 0.13.0
c 5.c 34ms 0.5ms 2.1MB 23ms 0ms clang 14.0.0-1ubuntu1.1
c 8-i.c 35ms 0.1ms 2.3MB 27ms 0ms gcc 14.2.0
c 2.c 35ms 1.7ms 2.1MB 23ms 0ms clang 14.0.0-1ubuntu1.1
python 2.py 177ms 3.9ms 57.6MB 153ms 10ms pypy 3.10.14
python 1.py 305ms 2.4ms 56.6MB 283ms 7ms pypy 3.10.14
python 1.py 946ms 19ms 8.3MB 937ms 0ms pyston 3.8.12
python 2.py 1298ms 20ms 8.1MB 1280ms 0ms pyston 3.8.12
python 1.py 2997ms 82ms 8.8MB 2987ms 0ms cpython 3.13.1
python 2.py 3190ms 235ms 8.8MB 3177ms 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 266ms 8.2ms 40.9MB 250ms 0ms gcc 14.2.0
c 1.c 273ms 3.6ms 40.8MB 257ms 0ms clang 14.0.0-1ubuntu1.1
c 1.c 303ms 15ms 40.3MB 287ms 3ms zigcc 0.13.0
python 1.py 2535ms 9.1ms 369.1MB 2463ms 57ms pypy 3.10.14
python 2.py 2952ms 18ms 633.0MB 2773ms 163ms pyston 3.8.12
python 1.py 4904ms 18ms 320.4MB 4843ms 43ms 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.5MB 4817ms 170ms cpython 3.13.1
python 2.py timeout 0.0ms 959.4MB 4733ms 253ms pypy 3.10.14

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 50ms 1.3ms 11.5MB 33ms 0ms clang 14.0.0-1ubuntu1.1
c 1.c 53ms 5.0ms 11.6MB 40ms 0ms gcc 14.2.0
c 1.c 60ms 2.8ms 11.0MB 47ms 0ms zigcc 0.13.0
python 1.py 526ms 8.6ms 134.6MB 483ms 27ms pypy 3.10.14
python 2.py 710ms 4.5ms 164.2MB 667ms 27ms pyston 3.8.12
python 1.py 1093ms 7.3ms 86.0MB 1067ms 10ms pyston 3.8.12
python 2.py 1416ms 3.8ms 165.0MB 1367ms 30ms cpython 3.13.1
python 2.py 1536ms 11ms 289.6MB 1443ms 77ms pypy 3.10.14
python 1.py 2657ms 8.6ms 86.8MB 2630ms 10ms cpython 3.13.1

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 4.py 1916ms 8.2ms 8.9MB 1867ms 33ms pyston 3.8.12
python 4.py 1980ms 6.9ms 9.4MB 1907ms 53ms cpython 3.13.1
python 4.py 2133ms 8.9ms 89.1MB 2097ms 17ms pypy 3.10.14

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 4.py 454ms 5.7ms 8.6MB 440ms 0ms pyston 3.8.12
python 4.py 467ms 0.8ms 9.0MB 453ms 0ms cpython 3.13.1
python 4.py 544ms 14ms 83.6MB 503ms 23ms pypy 3.10.14

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 2230ms 6.1ms 244.1MB 2163ms 50ms pypy 3.10.14
python 1.py 4730ms 18ms 226.2MB 4550ms 160ms pyston 3.8.12
python 1.py timeout 0.0ms 111.6MB 4950ms 37ms cpython 3.13.1

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 330ms 1.4ms 84.8MB 287ms 30ms pypy 3.10.14
python 1.py 492ms 4.4ms 30.4MB 460ms 17ms pyston 3.8.12
python 1.py 628ms 2.8ms 31.0MB 590ms 27ms cpython 3.13.1

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 3167ms 4.3ms 8.4MB 3150ms 0ms pyston 3.8.12
python 1.py 3716ms 30ms 74.6MB 3673ms 27ms pypy 3.10.14
python 1.py 3799ms 33ms 8.8MB 3787ms 0ms cpython 3.13.1

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 799ms 1.5ms 8.3MB 783ms 0ms pyston 3.8.12
python 1.py 964ms 6.9ms 8.6MB 950ms 0ms cpython 3.13.1
python 1.py 1028ms 8.3ms 67.5MB 1000ms 13ms pypy 3.10.14

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 6-im.c 959ms 3.7ms 4.1MB 3763ms 0ms gcc 14.2.0
c 4-m.c 963ms 1.3ms 4.1MB 3777ms 0ms gcc 14.2.0
c 6-im.c 1014ms 27ms 7.2MB 3937ms 13ms clang 14.0.0-1ubuntu1.1
c 5-im.c 1092ms 4.2ms 4.1MB 4290ms 0ms gcc 14.2.0
c 4-m.c 1118ms 3.5ms 7.3MB 4377ms 3ms clang 14.0.0-1ubuntu1.1
c 5-im.c 1329ms 4.7ms 5.3MB 5207ms 3ms clang 14.0.0-1ubuntu1.1
c 3-m.c 1873ms 45ms 5.3MB 7227ms 20ms clang 14.0.0-1ubuntu1.1
c 3-m.c 1974ms 7.7ms 4.1MB 7773ms 0ms gcc 14.2.0
python 8.py timeout 0.0ms 16.7MB 57ms 7ms cpython 3.13.1
python 8.py timeout 0.0ms 100.1MB 863ms 163ms pypy 3.10.14
python 8.py timeout 0.0ms 18.1MB 73ms 20ms pyston 3.8.12

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 6-im.c 248ms 1.1ms 4.0MB 947ms 0ms gcc 14.2.0
c 4-m.c 254ms 1.5ms 4.0MB 967ms 0ms gcc 14.2.0
c 6-im.c 259ms 0.3ms 5.3MB 977ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 287ms 5.1ms 4.0MB 1090ms 0ms gcc 14.2.0
c 4-m.c 288ms 0.9ms 5.1MB 1087ms 3ms clang 14.0.0-1ubuntu1.1
c 5-im.c 340ms 1.6ms 7.3MB 1303ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 471ms 13ms 5.4MB 1797ms 3ms clang 14.0.0-1ubuntu1.1
c 3-m.c 511ms 13ms 4.0MB 1970ms 0ms gcc 14.2.0
python 8.py timeout 0.0ms 16.5MB 103ms 17ms cpython 3.13.1
python 8.py timeout 0.0ms 100.0MB 1510ms 497ms pypy 3.10.14
python 8.py timeout 0.0ms 17.8MB 127ms 43ms 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 3.3ms 4.0MB 247ms 0ms gcc 14.2.0
c 6-im.c 72ms 1.3ms 7.1MB 247ms 0ms clang 14.0.0-1ubuntu1.1
c 4-m.c 77ms 9.0ms 4.0MB 263ms 0ms gcc 14.2.0
c 4-m.c 80ms 0.5ms 5.1MB 273ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 81ms 2.6ms 4.0MB 287ms 0ms gcc 14.2.0
c 5-im.c 92ms 0.5ms 5.2MB 317ms 3ms clang 14.0.0-1ubuntu1.1
c 3-m.c 129ms 7.0ms 5.1MB 460ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 135ms 1.0ms 4.0MB 500ms 0ms gcc 14.2.0
python 8-m.py 1991ms 11ms 95.1MB 6310ms 350ms pypy 3.10.14
python 8.py timeout 0.0ms 16.1MB 257ms 50ms cpython 3.13.1
python 8.py timeout 0.0ms 17.2MB 433ms 100ms pyston 3.8.12