Swift VS Python benchmarks

Current benchmark data was generated on Sun Dec 01 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 1149ms 16ms 95.7MB 1087ms 47ms pypy 3.10.14
swift 1.swift 2834ms 94ms 54.3MB 2803ms 13ms swift 6.0.2
python 1.py timeout 0.0ms 40.8MB 4970ms 17ms cpython 3.13.0
python 1.py timeout 0.0ms 40.6MB 4743ms 240ms pyston 3.8.12

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 94ms 1.9ms 68.0MB 63ms 20ms pypy 3.10.14
swift 1.swift 229ms 2.2ms 12.5MB 217ms 0ms swift 6.0.2
python 1.py 491ms 25ms 11.9MB 463ms 7ms pyston 3.8.12
python 1.py 710ms 4.2ms 12.8MB 697ms 0ms cpython 3.13.0

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 1.swift 2463ms 5.8ms 6.6MB 2453ms 0ms swift 6.0.2

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 1.swift 211ms 1.2ms 5.8MB 200ms 0ms swift 6.0.2

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 3-m.swift 145ms 2.8ms 25.0MB 413ms 10ms swift 6.0.2
python 1.py 1909ms 10.0ms 88.3MB 1867ms 23ms pypy 3.10.14
python 5-m.py 2472ms 27ms 12.5MB 3610ms 997ms pyston 3.8.12
python 5-m.py 2826ms 10ms 64.9MB 4047ms 780ms pypy 3.10.14
python 1.py 3033ms 47ms 8.1MB 3017ms 0ms pyston 3.8.12
python 5-m.py 3411ms 65ms 13.9MB 4617ms 930ms cpython 3.13.0
python 1.py 4670ms 96ms 8.8MB 4650ms 3ms cpython 3.13.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 3.swift 38ms 0.6ms 18.3MB 33ms 0ms swift 6.0.2
python 1.py 250ms 0.3ms 63.8MB 223ms 10ms pypy 3.10.14
python 5-m.py 312ms 1.4ms 12.5MB 420ms 123ms pyston 3.8.12
python 1.py 312ms 2.4ms 8.1MB 297ms 0ms pyston 3.8.12
python 5-m.py 408ms 10ms 13.9MB 520ms 120ms cpython 3.13.0
python 1.py 478ms 11ms 8.8MB 463ms 0ms cpython 3.13.0
python 5-m.py 555ms 5.0ms 65.0MB 817ms 313ms pypy 3.10.14

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 1.swift 2.7ms 0.3ms 6.3MB 0ms 0ms swift 6.0.2
python 1.py 12ms 1.2ms 7.6MB 5ms 5ms pyston 3.8.12
python 1.py 15ms 0.3ms 8.5MB 10ms 0ms cpython 3.13.0
python 1.py 29ms 1.5ms 51.0MB 4ms 12ms pypy 3.10.14

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 2-m.swift 1595ms 233ms 72.7MB 5200ms 33ms swift 6.0.2
python 3-m.py 2277ms 16ms 137.9MB 7727ms 313ms pypy 3.10.14
python 3-m.py 3092ms 33ms 33.7MB 11747ms 113ms pyston 3.8.12
python 3.py timeout 0.0ms 35.4MB 83ms 30ms cpython 3.13.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 2-m.swift 271ms 3.1ms 64.1MB 687ms 40ms swift 6.0.2
python 3-m.py 376ms 0.7ms 77.1MB 960ms 143ms pypy 3.10.14
python 3-m.py 397ms 3.1ms 17.7MB 1317ms 63ms pyston 3.8.12
python 3-m.py 664ms 8.0ms 17.0MB 2327ms 67ms cpython 3.13.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 7.swift 347ms 7.9ms 10.0MB 333ms 0ms swift 6.0.2
python 2.py 1352ms 14ms 59.8MB 1320ms 17ms pypy 3.10.14
python 1.py 2641ms 30ms 56.6MB 2610ms 13ms pypy 3.10.14
python 1.py timeout 0.0ms 8.8MB 4987ms 0ms cpython 3.13.0
python 2.py timeout 0.0ms 8.8MB 4983ms 0ms cpython 3.13.0
python 1.py timeout 0.0ms 8.3MB 4990ms 0ms pyston 3.8.12
python 2.py timeout 0.0ms 8.1MB 4990ms 0ms pyston 3.8.12

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 7.swift 41ms 0.1ms 10.1MB 30ms 0ms swift 6.0.2
python 2.py 180ms 2.7ms 57.6MB 153ms 10ms pypy 3.10.14
python 1.py 304ms 5.3ms 56.8MB 277ms 10ms pypy 3.10.14
python 1.py 1078ms 255ms 8.3MB 1063ms 0ms pyston 3.8.12
python 2.py 1319ms 15ms 8.1MB 1303ms 0ms pyston 3.8.12
python 1.py 2912ms 17ms 8.8MB 2900ms 0ms cpython 3.13.0
python 2.py 3132ms 41ms 8.8MB 3123ms 0ms cpython 3.13.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 4.py 1907ms 12ms 8.9MB 1853ms 37ms pyston 3.8.12
python 4.py 1961ms 9.8ms 9.5MB 1897ms 47ms cpython 3.13.0
python 4.py 2141ms 12ms 89.1MB 2093ms 33ms pypy 3.10.14
swift 1.swift timeout 0.0ms 7.5MB 4933ms 53ms swift 6.0.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 4.py 450ms 3.5ms 8.6MB 437ms 0ms pyston 3.8.12
python 4.py 484ms 30ms 9.1MB 470ms 0ms cpython 3.13.0
python 4.py 545ms 13ms 83.5MB 503ms 27ms pypy 3.10.14
swift 1.swift 1947ms 10ms 7.3MB 1933ms 0ms swift 6.0.2