Swift VS Java 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
java 2.java 471ms 5.6ms 648.0MB 570ms 103ms openjdk 23
java 2-m.java 482ms 17ms 645.0MB 687ms 103ms graal/jvm 17.0.8
java 2.java 530ms 1.5ms 571.1MB 573ms 137ms openjdk 21
java 2.java 1186ms 22ms 1052.1MB 590ms 767ms openjdk/zgc 21
swift 1.swift 2834ms 94ms 54.3MB 2803ms 13ms swift 6.0.2

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2.java 128ms 1.7ms 166.9MB 153ms 33ms openjdk 21
java 2.java 130ms 5.1ms 98.0MB 157ms 37ms openjdk 23
java 2-m.java 157ms 17ms 230.2MB 233ms 53ms graal/jvm 17.0.8
swift 1.swift 229ms 2.2ms 12.5MB 217ms 0ms swift 6.0.2
java 2.java 309ms 7.0ms 243.6MB 153ms 207ms 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 897ms 23ms 100.1MB 3263ms 53ms graal/jvm 17.0.8
java 1-m.java 965ms 57ms 50.0MB 3537ms 20ms openjdk 23
java 1-m.java 983ms 6.8ms 49.0MB 3597ms 37ms openjdk 21
java 1-m.java 1043ms 9.0ms 46.1MB 3407ms 143ms openjdk/zgc 21
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
java 1-m.java 180ms 5.5ms 48.5MB 493ms 23ms openjdk 21
java 1-m.java 194ms 5.8ms 50.1MB 480ms 23ms openjdk 23
java 1-m.java 202ms 11ms 101.4MB 547ms 33ms graal/jvm 17.0.8
swift 1.swift 211ms 1.2ms 5.8MB 200ms 0ms swift 6.0.2
java 1-m.java 295ms 2.3ms 45.7MB 483ms 137ms openjdk/zgc 21

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
java 4.java 457ms 0.7ms 47.4MB 543ms 20ms openjdk 21
java 4-m.java 462ms 19ms 104.6MB 670ms 43ms graal/jvm 17.0.8
java 4.java 466ms 9.2ms 49.3MB 567ms 17ms openjdk 23
java 4.java 568ms 6.1ms 47.0MB 550ms 133ms openjdk/zgc 21

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
java 4-m.java 124ms 4.1ms 87.9MB 163ms 30ms graal/jvm 17.0.8
java 4.java 127ms 1.0ms 46.1MB 170ms 17ms openjdk 21
java 4.java 132ms 2.0ms 47.8MB 177ms 17ms openjdk 23
java 4.java 241ms 3.8ms 43.8MB 153ms 140ms openjdk/zgc 21

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
java 1.java 68ms 3.0ms 59.0MB 70ms 20ms graal/jvm 17.0.8
java 1.java 73ms 4.6ms 44.8MB 74ms 22ms openjdk 23
java 1.java 77ms 1.6ms 43.8MB 76ms 20ms openjdk 21
java 1.java 187ms 4.1ms 44.6MB 82ms 128ms 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 992ms 16ms 155.1MB 3317ms 67ms openjdk 23
java 3-m.java 1000ms 78ms 127.5MB 3403ms 30ms openjdk 21
java 3-m.java 1150ms 14ms 183.6MB 3873ms 70ms graal/jvm 17.0.8
java 3-m.java 1444ms 61ms 180.9MB 4577ms 197ms openjdk/zgc 21
swift 2-m.swift 1595ms 233ms 72.7MB 5200ms 33ms swift 6.0.2

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
java 3-m.java 332ms 16ms 101.3MB 963ms 43ms openjdk 21
java 3-m.java 345ms 27ms 89.8MB 977ms 67ms openjdk 23
java 3-m.java 361ms 32ms 141.0MB 980ms 53ms graal/jvm 17.0.8
java 3-m.java 440ms 3.1ms 98.5MB 930ms 167ms openjdk/zgc 21

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
java 1.java 443ms 2.2ms 45.3MB 480ms 13ms openjdk 21
java 1.java 448ms 1.5ms 48.5MB 483ms 20ms openjdk 23
java 1.java 450ms 4.6ms 83.3MB 477ms 30ms graal/jvm 17.0.8
java 1.java 569ms 1.3ms 46.9MB 493ms 137ms openjdk/zgc 21
java 2.java 1248ms 2.9ms 611.8MB 1370ms 97ms openjdk 21
java 2.java 1255ms 4.8ms 780.5MB 1383ms 97ms openjdk 23
java 2.java 3283ms 56ms 2413.4MB 1647ms 1847ms openjdk/zgc 21

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
java 1.java 120ms 2.1ms 87.3MB 137ms 37ms graal/jvm 17.0.8
java 1.java 121ms 1.0ms 45.4MB 163ms 17ms openjdk 21
java 1.java 123ms 1.3ms 48.3MB 157ms 13ms openjdk 23
java 1.java 245ms 0.4ms 44.9MB 160ms 140ms openjdk/zgc 21
java 2-m.java 307ms 2.9ms 343.0MB 450ms 57ms openjdk 21
java 2-m.java 313ms 5.4ms 387.7MB 447ms 67ms openjdk 23
java 2.java 704ms 8.8ms 536.4MB 473ms 420ms openjdk/zgc 21

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 3200ms 37ms 447.4MB 3680ms 97ms graal/jvm 17.0.8
java 1.java 3677ms 90ms 388.1MB 4527ms 123ms openjdk 23
java 1.java 3700ms 76ms 423.2MB 4547ms 120ms openjdk 21
java 1.java timeout 0.0ms 2012.2MB 4660ms 1187ms openjdk/zgc 21
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
java 1-m.java 918ms 18ms 448.8MB 1310ms 90ms graal/jvm 17.0.8
java 1-m.java 1015ms 31ms 352.4MB 1803ms 90ms openjdk 21
java 1-m.java 1038ms 10ms 370.6MB 1787ms 90ms openjdk 23
swift 1.swift 1947ms 10ms 7.3MB 1933ms 0ms swift 6.0.2
java 1.java 2036ms 48ms 1391.2MB 1720ms 1087ms openjdk/zgc 21