Swift VS Java benchmarks

Current benchmark data was generated on Tue Dec 31 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
java 2.java 428ms 6.0ms 574.2MB 503ms 83ms openjdk 21
java 2-m.java 448ms 5.4ms 648.6MB 620ms 120ms graal/jvm 17.0.8
java 2.java 451ms 8.7ms 650.1MB 557ms 87ms openjdk 23
java 2.java 1140ms 6.2ms 1085.8MB 540ms 753ms openjdk/zgc 21
swift 1.swift 2431ms 13ms 54.0MB 2407ms 7ms swift 6.0.3

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 117ms 3.3ms 167.6MB 147ms 30ms openjdk 21
java 2.java 122ms 6.2ms 98.2MB 143ms 33ms openjdk 23
java 2-m.java 153ms 9.8ms 226.4MB 223ms 60ms graal/jvm 17.0.8
swift 1.swift 222ms 2.8ms 11.8MB 210ms 0ms swift 6.0.3
java 2.java 289ms 1.8ms 241.5MB 147ms 187ms openjdk/zgc 21

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 859ms 20ms 100.0MB 3133ms 30ms graal/jvm 17.0.8
java 1-m.java 901ms 28ms 48.5MB 3350ms 20ms openjdk 21
java 1-m.java 939ms 5.5ms 50.3MB 3437ms 33ms openjdk 23
java 1-m.java 1000ms 15ms 46.4MB 3263ms 133ms openjdk/zgc 21
swift 1.swift 2350ms 22ms 5.6MB 2337ms 0ms swift 6.0.3

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 175ms 16ms 48.3MB 470ms 17ms openjdk 21
java 1-m.java 187ms 15ms 50.4MB 493ms 17ms openjdk 23
java 1-m.java 195ms 15ms 99.7MB 530ms 43ms graal/jvm 17.0.8
swift 1.swift 199ms 1.9ms 5.6MB 190ms 0ms swift 6.0.3
java 1-m.java 282ms 16ms 47.5MB 453ms 127ms openjdk/zgc 21

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 3-m.swift 135ms 5.7ms 24.6MB 367ms 7ms swift 6.0.3
java 4.java 415ms 6.6ms 107.3MB 563ms 50ms graal/jvm 17.0.8
java 4.java 431ms 15ms 47.5MB 517ms 20ms openjdk 21
java 4.java 439ms 9.7ms 49.3MB 523ms 17ms openjdk 23
java 4.java 541ms 2.5ms 44.9MB 507ms 133ms openjdk/zgc 21

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 3.swift 35ms 0.4ms 18.3MB 33ms 0ms swift 6.0.3
java 4.java 116ms 0.7ms 46.4MB 150ms 17ms openjdk 21
java 4.java 117ms 0.9ms 47.5MB 153ms 17ms openjdk 23
java 4-m.java 132ms 7.0ms 97.4MB 180ms 37ms graal/jvm 17.0.8
java 4.java 226ms 9.1ms 43.9MB 153ms 130ms openjdk/zgc 21

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 1.swift 2.4ms 0.2ms 6.0MB 0ms 0ms swift 6.0.3
java 1.java 61ms 1.3ms 58.6MB 60ms 20ms graal/jvm 17.0.8
java 1.java 69ms 2.9ms 44.7MB 66ms 14ms openjdk 23
java 1.java 69ms 1.0ms 43.8MB 72ms 10ms openjdk 21
java 1.java 174ms 5.3ms 44.5MB 80ms 116ms openjdk/zgc 21

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 3-m.java 957ms 65ms 126.8MB 3243ms 40ms openjdk 21
java 3-m.java 1032ms 55ms 183.8MB 3450ms 77ms graal/jvm 17.0.8
java 3-m.java 1036ms 18ms 156.5MB 3543ms 47ms openjdk 23
swift 2-m.swift 1324ms 22ms 74.6MB 4820ms 30ms swift 6.0.3
java 3-m.java 1340ms 52ms 178.8MB 4223ms 190ms openjdk/zgc 21

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 2-m.swift 250ms 3.1ms 63.8MB 653ms 30ms swift 6.0.3
java 3-m.java 311ms 28ms 87.9MB 907ms 17ms openjdk 23
java 3-m.java 328ms 29ms 100.2MB 973ms 30ms openjdk 21
java 3-m.java 356ms 16ms 139.7MB 963ms 53ms graal/jvm 17.0.8
java 3-m.java 401ms 8.3ms 100.0MB 823ms 167ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 7.swift 329ms 4.6ms 9.6MB 317ms 0ms swift 6.0.3
java 1.java 417ms 2.4ms 45.2MB 450ms 13ms openjdk 21
java 1.java 420ms 6.1ms 48.2MB 450ms 20ms openjdk 23
java 1.java 429ms 7.0ms 85.0MB 457ms 27ms graal/jvm 17.0.8
java 1.java 530ms 6.4ms 46.5MB 450ms 130ms openjdk/zgc 21
java 2.java 1166ms 4.4ms 571.8MB 1293ms 77ms openjdk 21
java 2.java 1187ms 9.7ms 717.8MB 1287ms 90ms openjdk 23
java 2.java 3101ms 57ms 2431.6MB 1560ms 1743ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 7.swift 37ms 0.6ms 9.8MB 23ms 0ms swift 6.0.3
java 1.java 111ms 2.5ms 45.2MB 137ms 20ms openjdk 21
java 1.java 112ms 0.7ms 87.3MB 130ms 30ms graal/jvm 17.0.8
java 1.java 114ms 1.2ms 48.5MB 140ms 20ms openjdk 23
java 1.java 230ms 5.1ms 46.5MB 150ms 133ms openjdk/zgc 21
java 2-m.java 289ms 6.3ms 348.4MB 407ms 70ms openjdk 23
java 2-m.java 293ms 18ms 355.0MB 440ms 30ms openjdk 21
java 2.java 658ms 2.3ms 536.9MB 437ms 403ms openjdk/zgc 21

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 3054ms 20ms 378.6MB 3497ms 93ms graal/jvm 17.0.8
java 1.java 3512ms 55ms 352.2MB 4263ms 100ms openjdk 21
java 1.java 3516ms 17ms 467.6MB 4333ms 110ms openjdk 23
java 1.java 4911ms 83ms 1847.1MB 4407ms 1287ms openjdk/zgc 21
swift 1.swift timeout 0.0ms 7.4MB 4913ms 70ms swift 6.0.3

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 862ms 30ms 376.3MB 1213ms 93ms graal/jvm 17.0.8
java 1-m.java 946ms 37ms 351.6MB 1657ms 93ms openjdk 21
java 1-m.java 959ms 18ms 387.9MB 1673ms 93ms openjdk 23
swift 1.swift 1766ms 11ms 6.9MB 1753ms 0ms swift 6.0.3
java 1.java 1914ms 12ms 1374.3MB 1617ms 980ms openjdk/zgc 21