Swift VS Java benchmarks

Current benchmark data was generated on Thu Jul 13 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz (Model 106)

* -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 672ms 7.4ms 412.4MB 670ms 97ms openjdk 20
java 2.java 673ms 14ms 413.9MB 690ms 80ms openjdk 22
java 2.java 799ms 50ms 666.8MB 807ms 187ms graal/jvm 17.0.7
java 2.java 1336ms 56ms 1147.9MB 903ms 630ms openjdk/zgc 20
swift 1.swift 2559ms 11ms 52.7MB 2533ms 10ms swift 5.8.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2.java 165ms 6.2ms 108.9MB 160ms 27ms openjdk 22
java 2.java 165ms 3.9ms 108.4MB 157ms 33ms openjdk 20
java 2.java 187ms 9.1ms 164.5MB 217ms 40ms graal/jvm 17.0.7
swift 1.swift 237ms 3.5ms 10.4MB 223ms 0ms swift 5.8.1
java 2.java 298ms 0.3ms 235.9MB 193ms 137ms openjdk/zgc 20

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 1660ms 24ms 92.0MB 3147ms 30ms graal/jvm 17.0.7
java 1-m.java 1678ms 19ms 43.4MB 3203ms 13ms openjdk 22
java 1-m.java 1706ms 16ms 42.4MB 3177ms 57ms openjdk/zgc 20
java 1-m.java 1751ms 60ms 40.7MB 3347ms 10ms openjdk 20
swift 1.swift 3306ms 8.5ms 2.3MB 3290ms 0ms swift 5.8.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 275ms 5.3ms 40.7MB 440ms 13ms openjdk 20
swift 1.swift 280ms 1.5ms 2.3MB 270ms 0ms swift 5.8.1
java 1-m.java 283ms 13ms 92.9MB 453ms 20ms graal/jvm 17.0.7
java 1-m.java 285ms 8.9ms 43.6MB 443ms 17ms openjdk 22
java 1-m.java 311ms 6.6ms 42.4MB 427ms 53ms openjdk/zgc 20

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 3-m.swift 310ms 4.4ms 21.0MB 543ms 3ms swift 5.8.1
java 4.java 512ms 6.3ms 41.0MB 587ms 13ms openjdk 22
java 4.java 521ms 11ms 40.5MB 583ms 17ms openjdk 20
java 4.java 558ms 4.2ms 40.2MB 583ms 57ms openjdk/zgc 20
java 4.java 612ms 3.2ms 97.1MB 797ms 27ms graal/jvm 17.0.7

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 3.swift 55ms 0.7ms 14.4MB 53ms 0ms swift 5.8.1
java 4.java 147ms 14ms 39.8MB 167ms 7ms openjdk 20
java 4.java 149ms 10ms 40.2MB 170ms 7ms openjdk 22
java 4.java 158ms 3.6ms 86.0MB 183ms 17ms graal/jvm 17.0.7
java 4.java 189ms 7.0ms 39.3MB 170ms 50ms openjdk/zgc 20

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 1.swift 2.0ms 0.6ms 4.7MB 0ms 0ms swift 5.8.1
java 1.java 72ms 3.2ms 61.2MB 70ms 8ms graal/jvm 17.0.7
java 1.java 76ms 1.1ms 41.5MB 76ms 8ms openjdk 22
java 1.java 81ms 4.5ms 39.3MB 78ms 10ms openjdk 20
java 1.java 118ms 5.5ms 38.2MB 74ms 52ms openjdk/zgc 20

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 3-m.java 1459ms 35ms 114.5MB 2660ms 40ms openjdk 20
java 3-m.java 1485ms 8.5ms 114.9MB 2710ms 33ms openjdk 22
java 3-m.java 1563ms 84ms 169.6MB 2880ms 53ms graal/jvm 17.0.7
java 3-m.java 1945ms 74ms 171.7MB 3443ms 137ms openjdk/zgc 20
swift 2-m.swift 2297ms 447ms 52.2MB 3860ms 20ms swift 5.8.1

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 2-m.swift 357ms 7.2ms 31.5MB 603ms 13ms swift 5.8.1
java 3-m.java 457ms 23ms 84.8MB 763ms 17ms openjdk 20
java 3-m.java 462ms 17ms 86.8MB 783ms 13ms openjdk 22
java 3-m.java 465ms 26ms 134.9MB 763ms 43ms graal/jvm 17.0.7
java 3-m.java 476ms 21ms 94.0MB 710ms 93ms openjdk/zgc 20

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 7.swift 433ms 0.3ms 5.3MB 420ms 0ms swift 5.8.1
java 1.java 546ms 4.8ms 87.4MB 567ms 27ms graal/jvm 17.0.7
java 1.java 568ms 7.8ms 40.5MB 577ms 13ms openjdk 20
java 1.java 569ms 5.5ms 43.6MB 580ms 10ms openjdk 22
java 1.java 608ms 2.8ms 41.6MB 577ms 60ms openjdk/zgc 20
java 2.java 1893ms 12ms 514.6MB 1927ms 103ms openjdk 20
java 2.java 1933ms 5.9ms 506.0MB 1947ms 120ms openjdk 22
java 2.java 2609ms 2.3ms 1195.5MB 2063ms 730ms openjdk/zgc 20

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
swift 7.swift 46ms 0.3ms 5.3MB 40ms 0ms swift 5.8.1
java 1.java 141ms 3.4ms 84.6MB 173ms 13ms graal/jvm 17.0.7
java 1.java 148ms 3.9ms 40.8MB 160ms 17ms openjdk 20
java 1.java 149ms 5.8ms 41.7MB 163ms 10ms openjdk 22
java 1.java 197ms 7.3ms 41.7MB 167ms 57ms openjdk/zgc 20
java 2.java 424ms 2.6ms 338.1MB 493ms 60ms openjdk 20
java 2.java 425ms 2.7ms 330.8MB 493ms 67ms openjdk 22
java 2.java 762ms 1.2ms 522.5MB 547ms 360ms openjdk/zgc 20

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 4975ms 15ms 338.9MB 5350ms 67ms graal/jvm 17.0.7
java 1.java timeout 0.0ms 299.0MB 5433ms 90ms openjdk 20
java 1.java timeout 0.0ms 285.3MB 5593ms 80ms openjdk 22
java 1.java timeout 0.0ms 1177.0MB 5083ms 597ms openjdk/zgc 20
swift 1.swift timeout 0.0ms 6.7MB 4957ms 17ms swift 5.8.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 1328ms 19ms 352.8MB 1673ms 63ms graal/jvm 17.0.7
java 1.java 1448ms 18ms 250.9MB 1840ms 73ms openjdk 20
java 1.java 1460ms 5.9ms 305.3MB 1907ms 63ms openjdk 22
java 1.java 1985ms 21ms 968.9MB 1903ms 623ms openjdk/zgc 20
swift 1.swift 2426ms 2.9ms 6.3MB 2410ms 0ms swift 5.8.1