C++ VS Java benchmarks

Current benchmark data was generated on Thu Feb 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.)

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1-im.cpp 404ms 1.1ms 4.7MB 1547ms 0ms g++ 11.4.0
cpp 1-im.cpp 407ms 3.0ms 7.9MB 1560ms 7ms clang++ 14.0.0-1ubuntu1.1
java 1-m.java 888ms 5.5ms 97.2MB 3257ms 43ms graal/jvm 17.0.8
java 1-m.java 946ms 34ms 48.5MB 3513ms 23ms openjdk 21
java 1-m.java 989ms 11ms 49.0MB 3650ms 17ms openjdk 23
java 1-m.java 1010ms 36ms 47.9MB 3313ms 133ms openjdk/zgc 21

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1-im.cpp 43ms 0.6ms 5.9MB 133ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 1-im.cpp 43ms 0.4ms 4.5MB 140ms 0ms g++ 11.4.0
java 1-m.java 179ms 6.4ms 48.5MB 490ms 27ms openjdk 21
java 1-m.java 185ms 1.9ms 48.7MB 487ms 13ms openjdk 23
java 1-m.java 198ms 9.6ms 97.6MB 523ms 47ms graal/jvm 17.0.8
java 1-m.java 290ms 2.9ms 45.8MB 473ms 133ms openjdk/zgc 21

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 1.0ms 0.0ms 1.4MB 0ms 0ms g++ 11.4.0
cpp 1.cpp 1.4ms 0.1ms 2.3MB 0ms 0ms clang++ 14.0.0-1ubuntu1.1
java 1.java 66ms 3.1ms 54.7MB 64ms 24ms graal/jvm 17.0.8
java 1.java 73ms 1.9ms 43.8MB 74ms 14ms openjdk 21
java 1.java 73ms 2.7ms 43.9MB 80ms 14ms openjdk 23
java 1.java 189ms 6.4ms 42.6MB 84ms 132ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 167ms 0.1ms 1.5MB 160ms 0ms g++ 11.4.0
cpp 0-i.cpp 172ms 3.6ms 2.3MB 163ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 1.cpp 313ms 1.4ms 1.9MB 300ms 0ms g++ 11.4.0
cpp 1.cpp 314ms 1.2ms 2.3MB 307ms 0ms clang++ 14.0.0-1ubuntu1.1
java 1.java 443ms 1.2ms 47.6MB 487ms 13ms openjdk 23
java 1.java 444ms 1.9ms 45.4MB 477ms 20ms openjdk 21
java 1.java 455ms 6.6ms 86.8MB 483ms 30ms graal/jvm 17.0.8
java 1.java 559ms 4.6ms 46.7MB 480ms 133ms openjdk/zgc 21
java 2.java 1234ms 5.9ms 597.7MB 1363ms 77ms openjdk 23
java 2.java 1238ms 9.8ms 647.8MB 1373ms 80ms openjdk 21
java 2.java 3177ms 56ms 2367.4MB 1670ms 1723ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 19ms 0.2ms 1.5MB 10ms 0ms g++ 11.4.0
cpp 0-i.cpp 19ms 0.2ms 2.3MB 10ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 1.cpp 34ms 0.4ms 2.3MB 20ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 1.cpp 34ms 0.9ms 1.8MB 27ms 0ms g++ 11.4.0
java 1.java 119ms 1.1ms 45.5MB 147ms 23ms openjdk 21
java 1.java 120ms 0.2ms 47.8MB 153ms 20ms openjdk 23
java 1.java 126ms 5.3ms 87.5MB 157ms 27ms graal/jvm 17.0.8
java 1.java 243ms 2.9ms 46.7MB 163ms 140ms openjdk/zgc 21
java 2-m.java 295ms 2.6ms 352.8MB 433ms 50ms openjdk 23
java 2-m.java 298ms 4.2ms 362.9MB 443ms 50ms openjdk 21
java 2.java 681ms 8.7ms 528.1MB 440ms 427ms openjdk/zgc 21

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 397ms 1.3ms 117.2MB 443ms 20ms openjdk 23
java 1.java 403ms 8.1ms 114.9MB 447ms 30ms openjdk 21
cpp 1.cpp 484ms 2.6ms 7.3MB 470ms 0ms g++ 11.4.0
cpp 1.cpp 526ms 2.3ms 7.8MB 513ms 0ms clang++ 14.0.0-1ubuntu1.1
java 1.java 581ms 2.7ms 114.6MB 473ms 177ms openjdk/zgc 21
java 1-m.java 638ms 11ms 234.0MB 917ms 77ms graal/jvm 17.0.8
java 2.java 779ms 1.6ms 59.3MB 827ms 23ms openjdk 23
java 2.java 781ms 0.5ms 57.3MB 837ms 23ms openjdk 21
java 2.java 849ms 14ms 52.9MB 773ms 150ms openjdk/zgc 21
java 2-m.java 1353ms 17ms 264.4MB 2427ms 100ms graal/jvm 17.0.8

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 120ms 1.4ms 3.6MB 110ms 0ms g++ 11.4.0
cpp 1.cpp 131ms 1.3ms 4.1MB 120ms 0ms clang++ 14.0.0-1ubuntu1.1
java 1.java 158ms 3.3ms 67.3MB 207ms 20ms openjdk 23
java 1.java 162ms 8.7ms 64.7MB 203ms 27ms openjdk 21
java 1-m.java 214ms 20ms 137.5MB 287ms 60ms graal/jvm 17.0.8
java 2.java 257ms 0.4ms 49.6MB 293ms 30ms openjdk 23
java 2.java 257ms 3.8ms 49.8MB 313ms 23ms openjdk 21
java 1.java 284ms 4.8ms 63.3MB 210ms 143ms openjdk/zgc 21
java 2.java 365ms 2.0ms 49.3MB 307ms 137ms openjdk/zgc 21
java 2-m.java 582ms 94ms 203.7MB 1050ms 63ms graal/jvm 17.0.8

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 8-m.cpp 479ms 0.8ms 4.2MB 1863ms 0ms g++ 11.4.0
cpp 8-m.cpp 482ms 26ms 7.3MB 1840ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 6-im.cpp 916ms 3.0ms 5.3MB 3587ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 6-im.cpp 917ms 3.4ms 4.3MB 3607ms 0ms g++ 11.4.0
java 2-m.java 1956ms 9.0ms 48.0MB 7453ms 37ms openjdk 23
java 2-m.java 1957ms 12ms 47.8MB 7463ms 27ms openjdk 21
java 2-m.java 2081ms 13ms 45.6MB 7440ms 140ms openjdk/zgc 21
java 2-m.java 2462ms 20ms 94.8MB 8777ms 47ms graal/jvm 17.0.8

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 8-m.cpp 126ms 0.2ms 7.3MB 450ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 8-m.cpp 128ms 0.2ms 4.1MB 477ms 0ms g++ 11.4.0
cpp 6-im.cpp 238ms 0.4ms 5.4MB 890ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 6-im.cpp 242ms 4.2ms 4.2MB 907ms 0ms g++ 11.4.0
java 2-m.java 583ms 3.4ms 47.7MB 2050ms 20ms openjdk 21
java 2-m.java 586ms 3.4ms 47.9MB 2070ms 20ms openjdk 23
java 2-m.java 713ms 3.2ms 45.6MB 2100ms 133ms openjdk/zgc 21
java 2-m.java 744ms 11ms 100.2MB 2513ms 37ms graal/jvm 17.0.8

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 8-m.cpp 38ms 0.6ms 7.3MB 107ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 8-m.cpp 44ms 8.7ms 4.0MB 140ms 0ms g++ 11.4.0
cpp 6-im.cpp 67ms 0.9ms 5.4MB 227ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 6-im.cpp 68ms 0.2ms 4.2MB 237ms 0ms g++ 11.4.0
java 2-m.java 233ms 0.9ms 47.6MB 667ms 20ms openjdk 21
java 2-m.java 243ms 5.5ms 47.9MB 727ms 23ms openjdk 23
java 2-m.java 277ms 8.5ms 98.5MB 783ms 43ms graal/jvm 17.0.8
java 2-m.java 372ms 13ms 45.5MB 740ms 133ms openjdk/zgc 21