Swift VS Java 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.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2.java 467ms 1.5ms 646.0MB 567ms 97ms openjdk 23
java 2-m.java 468ms 12ms 645.0MB 687ms 90ms graal/jvm 17.0.8
java 2.java 498ms 2.1ms 572.9MB 563ms 113ms openjdk 21
java 2.java 1170ms 8.1ms 1044.5MB 570ms 760ms openjdk/zgc 21
swift 1.swift 2911ms 5.8ms 53.9MB 2883ms 17ms swift 6.0.3

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2.java 126ms 6.8ms 96.2MB 147ms 40ms openjdk 23
java 2.java 127ms 1.9ms 168.9MB 160ms 23ms openjdk 21
java 2-m.java 150ms 3.7ms 231.2MB 210ms 67ms graal/jvm 17.0.8
swift 1.swift 239ms 4.8ms 12.0MB 220ms 0ms swift 6.0.3
java 2.java 307ms 4.8ms 241.9MB 163ms 197ms 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 911ms 9.8ms 100.3MB 3347ms 37ms graal/jvm 17.0.8
java 1-m.java 978ms 3.0ms 48.5MB 3633ms 20ms openjdk 21
java 1-m.java 987ms 3.8ms 50.3MB 3620ms 27ms openjdk 23
java 1-m.java 1035ms 18ms 46.4MB 3387ms 133ms openjdk/zgc 21
swift 1.swift 2463ms 9.5ms 5.6MB 2450ms 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 181ms 2.4ms 48.3MB 483ms 20ms openjdk 21
java 1-m.java 188ms 5.8ms 50.3MB 470ms 30ms openjdk 23
swift 1.swift 212ms 2.8ms 5.6MB 200ms 0ms swift 6.0.3
java 1-m.java 220ms 19ms 101.5MB 580ms 43ms graal/jvm 17.0.8
java 1-m.java 296ms 3.4ms 47.5MB 503ms 130ms openjdk/zgc 21

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 3-m.swift 140ms 3.0ms 24.8MB 380ms 3ms swift 6.0.3
java 4.java 443ms 2.7ms 106.4MB 627ms 30ms graal/jvm 17.0.8
java 4.java 452ms 4.1ms 47.5MB 537ms 20ms openjdk 21
java 4.java 457ms 2.3ms 49.1MB 537ms 27ms openjdk 23
java 4.java 563ms 2.8ms 45.2MB 537ms 130ms openjdk/zgc 21

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 3.swift 37ms 0.2ms 18.1MB 33ms 0ms swift 6.0.3
java 4.java 125ms 1.5ms 46.5MB 167ms 10ms openjdk 21
java 4-m.java 125ms 2.0ms 47.9MB 170ms 20ms openjdk 23
java 4-m.java 130ms 6.6ms 92.6MB 180ms 33ms graal/jvm 17.0.8
java 4.java 239ms 4.5ms 46.0MB 160ms 133ms openjdk/zgc 21

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 1.swift 2.3ms 0.2ms 6.0MB 0ms 0ms swift 6.0.3
java 1.java 64ms 1.6ms 54.9MB 66ms 18ms graal/jvm 17.0.8
java 1.java 71ms 6.1ms 43.9MB 80ms 16ms openjdk 21
java 1.java 72ms 6.3ms 44.7MB 70ms 20ms openjdk 23
java 1.java 186ms 4.8ms 44.6MB 90ms 126ms 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 1038ms 48ms 155.0MB 3503ms 50ms openjdk 23
java 3-m.java 1040ms 74ms 127.6MB 3567ms 33ms openjdk 21
java 3-m.java 1106ms 10ms 182.0MB 3770ms 73ms graal/jvm 17.0.8
swift 2-m.swift 1401ms 19ms 72.6MB 5030ms 33ms swift 6.0.3
java 3-m.java 1447ms 54ms 180.5MB 4570ms 197ms openjdk/zgc 21

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 2-m.swift 262ms 2.8ms 63.8MB 687ms 20ms swift 6.0.3
java 3-m.java 316ms 23ms 102.0MB 920ms 40ms openjdk 21
java 3-m.java 335ms 7.7ms 137.4MB 883ms 73ms graal/jvm 17.0.8
java 3-m.java 338ms 27ms 87.0MB 1007ms 33ms openjdk 23
java 3-m.java 419ms 1.9ms 99.3MB 853ms 173ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 7.swift 344ms 2.5ms 9.8MB 330ms 0ms swift 6.0.3
java 1.java 441ms 1.3ms 45.2MB 483ms 17ms openjdk 21
java 1.java 445ms 3.9ms 48.2MB 477ms 23ms openjdk 23
java 1.java 445ms 1.7ms 87.1MB 467ms 30ms graal/jvm 17.0.8
java 1.java 565ms 2.0ms 44.6MB 497ms 127ms openjdk/zgc 21
java 2.java 1252ms 33ms 588.1MB 1390ms 83ms openjdk 21
java 2.java 1255ms 8.3ms 753.6MB 1367ms 107ms openjdk 23
java 2.java 3285ms 56ms 2475.9MB 1647ms 1840ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 7.swift 39ms 1.1ms 9.8MB 30ms 0ms swift 6.0.3
java 1.java 118ms 1.2ms 45.1MB 153ms 20ms openjdk 21
java 1.java 123ms 1.7ms 47.9MB 153ms 20ms openjdk 23
java 1.java 123ms 6.2ms 87.3MB 157ms 27ms graal/jvm 17.0.8
java 1.java 237ms 4.3ms 44.7MB 157ms 137ms openjdk/zgc 21
java 2-m.java 299ms 2.8ms 344.9MB 437ms 53ms openjdk 21
java 2-m.java 311ms 5.4ms 346.3MB 443ms 70ms openjdk 23
java 2.java 689ms 16ms 525.9MB 463ms 403ms openjdk/zgc 21

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 3183ms 10ms 374.6MB 3637ms 103ms graal/jvm 17.0.8
java 1.java 3692ms 33ms 412.3MB 4563ms 97ms openjdk 23
java 1.java 3696ms 87ms 425.5MB 4553ms 100ms openjdk 21
java 1.java timeout 0.0ms 1870.9MB 4497ms 1297ms openjdk/zgc 21
swift 1.swift timeout 0.0ms 7.1MB 4907ms 77ms swift 6.0.3

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 874ms 7.9ms 373.7MB 1197ms 107ms graal/jvm 17.0.8
java 1-m.java 1011ms 13ms 402.8MB 1770ms 103ms openjdk 23
java 1-m.java 1012ms 39ms 351.1MB 1780ms 100ms openjdk 21
swift 1.swift 1861ms 13ms 6.9MB 1840ms 3ms swift 6.0.3
java 1.java 2009ms 52ms 1383.0MB 1723ms 1053ms openjdk/zgc 21