Swift VS Java benchmarks

Current benchmark data was generated on Tue Mar 25 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 458ms 2.4ms 576.1MB 560ms 83ms openjdk 21
java 2-m.java 468ms 4.5ms 644.9MB 643ms 120ms graal/jvm 17.0.8
java 2.java 483ms 9.4ms 620.6MB 587ms 107ms openjdk 23
java 2.java 1240ms 21ms 1086.3MB 587ms 817ms openjdk/zgc 21
swift 1.swift 2950ms 76ms 53.9MB 2917ms 20ms swift 6.0.3

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 123ms 4.3ms 98.7MB 163ms 30ms openjdk 23
java 2.java 125ms 5.0ms 169.0MB 153ms 33ms openjdk 21
java 2-m.java 150ms 9.1ms 225.3MB 223ms 57ms graal/jvm 17.0.8
swift 1.swift 237ms 1.1ms 11.9MB 227ms 0ms swift 6.0.3
java 2.java 306ms 2.8ms 241.6MB 150ms 210ms 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 894ms 11ms 95.4MB 3297ms 43ms graal/jvm 17.0.8
java 1-m.java 974ms 4.1ms 48.1MB 3630ms 23ms openjdk 21
java 1-m.java 991ms 2.3ms 50.2MB 3637ms 23ms openjdk 23
java 1-m.java 1026ms 24ms 45.7MB 3350ms 143ms openjdk/zgc 21
swift 1.swift 2483ms 17ms 5.6MB 2473ms 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 182ms 6.0ms 48.3MB 493ms 27ms openjdk 21
java 1-m.java 195ms 3.7ms 50.0MB 510ms 20ms openjdk 23
java 1-m.java 210ms 15ms 96.2MB 583ms 43ms graal/jvm 17.0.8
swift 1.swift 214ms 1.8ms 6.3MB 207ms 0ms swift 6.0.3
java 1-m.java 307ms 8.3ms 46.8MB 500ms 143ms 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 1.1ms 20.9MB 387ms 0ms swift 6.0.3
java 4.java 445ms 1.1ms 102.4MB 620ms 43ms graal/jvm 17.0.8
java 4.java 456ms 0.4ms 47.7MB 537ms 23ms openjdk 21
java 4.java 456ms 5.6ms 49.1MB 543ms 20ms openjdk 23
java 4.java 571ms 8.5ms 45.1MB 543ms 137ms openjdk/zgc 21

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 3.swift 36ms 0.3ms 18.3MB 30ms 0ms swift 6.0.3
java 4-m.java 124ms 5.6ms 91.1MB 173ms 30ms graal/jvm 17.0.8
java 4-m.java 125ms 2.1ms 46.7MB 167ms 23ms openjdk 21
java 4.java 127ms 5.7ms 48.5MB 173ms 13ms openjdk 23
java 4.java 246ms 8.1ms 44.0MB 170ms 137ms openjdk/zgc 21

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 1.swift 2.5ms 0.2ms 5.9MB 0ms 0ms swift 6.0.3
java 1.java 63ms 2.8ms 52.7MB 70ms 16ms graal/jvm 17.0.8
java 1.java 65ms 2.6ms 43.7MB 74ms 16ms openjdk 21
java 1.java 69ms 4.7ms 44.7MB 72ms 16ms openjdk 23
java 1.java 199ms 6.8ms 42.9MB 84ms 138ms 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 1032ms 61ms 128.5MB 3537ms 40ms openjdk 21
java 3-m.java 1092ms 33ms 157.0MB 3727ms 67ms openjdk 23
java 3-m.java 1122ms 4.2ms 178.6MB 3850ms 63ms graal/jvm 17.0.8
swift 2-m.swift 1390ms 6.6ms 74.5MB 5083ms 30ms swift 6.0.3
java 3-m.java 1415ms 34ms 178.6MB 4437ms 210ms openjdk/zgc 21

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 2-m.swift 263ms 1.7ms 60.0MB 693ms 23ms swift 6.0.3
java 3-m.java 317ms 18ms 89.9MB 897ms 40ms openjdk 21
java 3-m.java 340ms 23ms 90.4MB 1017ms 37ms openjdk 23
java 3-m.java 341ms 15ms 135.6MB 917ms 63ms graal/jvm 17.0.8
java 3-m.java 433ms 1.6ms 98.2MB 893ms 170ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 7.swift 345ms 1.2ms 9.8MB 340ms 0ms swift 6.0.3
java 1.java 445ms 1.2ms 45.1MB 487ms 17ms openjdk 21
java 1.java 448ms 0.8ms 48.1MB 483ms 20ms openjdk 23
java 1.java 451ms 5.3ms 82.3MB 480ms 30ms graal/jvm 17.0.8
java 1.java 570ms 6.7ms 44.6MB 483ms 140ms openjdk/zgc 21
java 2.java 1247ms 8.3ms 612.0MB 1383ms 87ms openjdk 21
java 2.java 1263ms 12ms 761.8MB 1380ms 107ms openjdk 23
java 2.java 3428ms 91ms 2585.6MB 1647ms 1983ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 7.swift 40ms 0.2ms 9.8MB 30ms 0ms swift 6.0.3
java 1.java 120ms 1.3ms 45.2MB 160ms 20ms openjdk 21
java 1.java 122ms 3.4ms 48.0MB 157ms 17ms openjdk 23
java 1.java 126ms 6.4ms 81.5MB 157ms 30ms graal/jvm 17.0.8
java 1.java 255ms 8.1ms 44.8MB 173ms 147ms openjdk/zgc 21
java 2-m.java 305ms 1.9ms 374.3MB 440ms 63ms openjdk 21
java 2-m.java 314ms 3.5ms 404.5MB 453ms 67ms openjdk 23
java 2.java 718ms 16ms 545.0MB 480ms 433ms openjdk/zgc 21

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 3250ms 4.4ms 443.6MB 3687ms 107ms graal/jvm 17.0.8
java 1.java 3741ms 68ms 414.0MB 4627ms 120ms openjdk 23
java 1.java 3777ms 87ms 428.4MB 4617ms 110ms openjdk 21
java 1.java timeout 0.0ms 2126.2MB 4680ms 1213ms openjdk/zgc 21
swift 1.swift timeout 0.0ms 7.1MB 4910ms 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 904ms 8.4ms 445.7MB 1267ms 97ms graal/jvm 17.0.8
java 1-m.java 1004ms 16ms 422.6MB 1803ms 87ms openjdk 21
java 1-m.java 1030ms 26ms 432.7MB 1780ms 97ms openjdk 23
swift 1.swift 1877ms 8.7ms 7.0MB 1863ms 0ms swift 6.0.3
java 1.java 2045ms 43ms 1343.3MB 1747ms 1080ms openjdk/zgc 21