C++ VS Java benchmarks

Current benchmark data was generated on Wed Feb 08 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz (Model 85)

* -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.)

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1-im.cpp 794ms 8.7ms 3.9MB 1543ms 0ms clang++ 14.0.0
cpp 1-im.cpp 823ms 2.4ms 1.4MB 1570ms 0ms g++ 12.2.0
java 1-m.java 1774ms 119ms 93.2MB 3357ms 30ms graal/jvm 17.0.6
java 1-m.java 1803ms 54ms 43.7MB 3437ms 17ms openjdk 19
java 1-m.java 1850ms 41ms 40.5MB 3520ms 20ms openjdk 20
java 1-m.java 1957ms 64ms 43.8MB 3607ms 77ms openjdk/zgc 19

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1-im.cpp 75ms 1.9ms 4.0MB 127ms 0ms clang++ 14.0.0
cpp 1-im.cpp 79ms 2.5ms 1.4MB 130ms 0ms g++ 12.2.0
java 1-m.java 294ms 13ms 43.5MB 470ms 13ms openjdk 19
java 1-m.java 297ms 6.3ms 40.7MB 457ms 23ms openjdk 20
java 1-m.java 311ms 15ms 91.7MB 490ms 43ms graal/jvm 17.0.6
java 1-m.java 349ms 2.4ms 43.5MB 463ms 73ms openjdk/zgc 19

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 2.4ms 0.7ms 1.3MB 0ms 0ms g++ 12.2.0
cpp 1.cpp 2.4ms 0.7ms 1.4MB 0ms 0ms clang++ 14.0.0
java 1.java 92ms 4.3ms 65.3MB 88ms 14ms graal/jvm 17.0.6
java 1.java 93ms 5.9ms 42.0MB 84ms 14ms openjdk 19
java 1.java 96ms 8.2ms 39.1MB 92ms 16ms openjdk 20
java 1.java 158ms 14ms 41.4MB 84ms 82ms openjdk/zgc 19

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 218ms 1.5ms 1.4MB 203ms 0ms g++ 12.2.0
cpp 0-i.cpp 253ms 4.3ms 1.4MB 243ms 0ms clang++ 14.0.0
cpp 1.cpp 413ms 9.0ms 1.4MB 400ms 0ms g++ 12.2.0
cpp 1.cpp 417ms 9.1ms 1.5MB 407ms 0ms clang++ 14.0.0
java 1.java 688ms 13ms 89.8MB 730ms 17ms graal/jvm 17.0.6
java 1.java 755ms 7.1ms 40.4MB 757ms 27ms openjdk 20
java 1.java 764ms 8.1ms 43.4MB 763ms 23ms openjdk 19
java 1.java 846ms 17ms 44.4MB 793ms 80ms openjdk/zgc 19
java 2.java 2324ms 28ms 656.4MB 2277ms 213ms openjdk 20
java 2.java 2338ms 11ms 550.4MB 2307ms 183ms openjdk 19
java 2.java 3688ms 40ms 1609.1MB 2637ms 1277ms openjdk/zgc 19

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 25ms 0.3ms 1.3MB 13ms 0ms g++ 12.2.0
cpp 0-i.cpp 28ms 0.2ms 1.4MB 20ms 0ms clang++ 14.0.0
cpp 1.cpp 45ms 0.3ms 1.4MB 40ms 0ms clang++ 14.0.0
cpp 1.cpp 46ms 1.9ms 1.3MB 40ms 0ms g++ 12.2.0
java 1.java 180ms 4.4ms 89.8MB 207ms 33ms graal/jvm 17.0.6
java 1.java 184ms 8.6ms 40.5MB 193ms 17ms openjdk 20
java 1.java 188ms 4.0ms 43.6MB 197ms 17ms openjdk 19
java 1.java 247ms 5.2ms 42.4MB 193ms 83ms openjdk/zgc 19
java 2.java 511ms 7.9ms 354.7MB 550ms 113ms openjdk 20
java 2.java 520ms 20ms 355.3MB 567ms 123ms openjdk 19
java 2.java 890ms 59ms 506.8MB 663ms 393ms openjdk/zgc 19

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 769ms 8.0ms 7.4MB 750ms 0ms clang++ 14.0.0
cpp 1.cpp 769ms 17ms 7.7MB 753ms 0ms g++ 12.2.0
java 2.java 1197ms 8.4ms 50.4MB 1237ms 20ms openjdk 20
java 1.java 1211ms 11ms 84.4MB 1233ms 30ms openjdk 19
java 1.java 1227ms 46ms 84.6MB 1247ms 40ms openjdk 20
java 2.java 1260ms 8.6ms 53.6MB 1313ms 13ms openjdk 19
java 2.java 1326ms 4.8ms 52.5MB 1300ms 87ms openjdk/zgc 19
java 1.java 1425ms 29ms 110.6MB 1363ms 120ms openjdk/zgc 19
java 1.java 1684ms 26ms 239.6MB 2347ms 127ms graal/jvm 17.0.6
java 2-m.java 2194ms 21ms 206.3MB 3857ms 123ms graal/jvm 17.0.6

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 177ms 1.4ms 4.0MB 167ms 0ms g++ 12.2.0
cpp 1.cpp 185ms 4.4ms 3.9MB 173ms 0ms clang++ 14.0.0
java 1.java 277ms 2.7ms 58.4MB 297ms 27ms openjdk 20
java 1.java 285ms 2.3ms 59.6MB 293ms 37ms openjdk 19
java 1.java 363ms 18ms 60.8MB 327ms 97ms openjdk/zgc 19
java 2.java 378ms 7.9ms 45.1MB 420ms 13ms openjdk 20
java 2.java 401ms 11ms 50.0MB 427ms 23ms openjdk 19
java 1.java 401ms 13ms 121.8MB 540ms 60ms graal/jvm 17.0.6
java 2.java 465ms 9.2ms 44.2MB 430ms 87ms openjdk/zgc 19
java 2-m.java 786ms 5.5ms 148.8MB 1357ms 80ms graal/jvm 17.0.6

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 8-m.cpp 1061ms 4.5ms 3.7MB 2067ms 3ms clang++ 14.0.0
cpp 7-m.cpp 1065ms 5.3ms 3.3MB 2080ms 0ms clang++ 14.0.0
cpp 8-m.cpp 1071ms 5.9ms 1.3MB 2087ms 0ms g++ 12.2.0
cpp 7-m.cpp 1071ms 11ms 1.4MB 2073ms 0ms g++ 12.2.0
cpp 6-im.cpp 2187ms 29ms 1.3MB 4277ms 0ms g++ 12.2.0
cpp 6-im.cpp 2209ms 24ms 3.4MB 4327ms 3ms clang++ 14.0.0
java 2.java timeout 0.0ms 91.1MB 9620ms 57ms graal/jvm 17.0.6
java 2.java timeout 0.0ms 44.6MB 9673ms 23ms openjdk 19
java 2.java timeout 0.0ms 40.7MB 9670ms 23ms openjdk 20
java 2.java timeout 0.0ms 44.1MB 9580ms 63ms openjdk/zgc 19

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 7-m.cpp 271ms 2.1ms 1.3MB 510ms 0ms g++ 12.2.0
cpp 7-m.cpp 278ms 3.3ms 3.3MB 517ms 0ms clang++ 14.0.0
cpp 8-m.cpp 281ms 2.7ms 1.3MB 523ms 0ms g++ 12.2.0
cpp 8-m.cpp 283ms 8.5ms 3.5MB 527ms 0ms clang++ 14.0.0
cpp 6-im.cpp 546ms 13ms 1.3MB 1053ms 0ms g++ 12.2.0
cpp 6-im.cpp 560ms 0.6ms 3.3MB 1077ms 3ms clang++ 14.0.0
java 2-m.java 1423ms 72ms 91.9MB 2637ms 30ms graal/jvm 17.0.6
java 2-m.java 2021ms 51ms 41.9MB 3780ms 30ms openjdk 19
java 2-m.java 2159ms 141ms 43.9MB 3967ms 80ms openjdk/zgc 19
java 2-m.java 2484ms 111ms 40.8MB 4717ms 20ms openjdk 20

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 7-m.cpp 73ms 1.9ms 1.4MB 120ms 0ms g++ 12.2.0
cpp 8-m.cpp 77ms 0.2ms 3.3MB 130ms 0ms clang++ 14.0.0
cpp 8-m.cpp 78ms 1.5ms 1.3MB 130ms 0ms g++ 12.2.0
cpp 7-m.cpp 79ms 2.5ms 3.5MB 130ms 0ms clang++ 14.0.0
cpp 6-im.cpp 151ms 0.9ms 1.3MB 273ms 0ms g++ 12.2.0
cpp 6-im.cpp 152ms 0.4ms 3.7MB 273ms 0ms clang++ 14.0.0
java 2-m.java 505ms 14ms 93.3MB 827ms 33ms graal/jvm 17.0.6
java 2-m.java 685ms 36ms 43.9MB 1207ms 23ms openjdk 19
java 2-m.java 719ms 39ms 42.2MB 1160ms 83ms openjdk/zgc 19
java 2-m.java 801ms 105ms 41.1MB 1323ms 20ms openjdk 20