All nbody problem benchmarks

Current benchmark data was generated on Fri Dec 09 2022, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8272CL 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.)

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 183ms 0.7ms 1.3MB 170ms 0ms g++ 12.2.0
cpp 0-i.cpp 209ms 0.5ms 1.4MB 197ms 0ms clang++ 14.0.0
rust 4-i.rs 212ms 0.3ms 1.1MB 200ms 0ms rustc 1.65.0
zig 2.zig 255ms 1.0ms 1.0MB 240ms 0ms zig 0.11.0-dev.632+d69e97ae1
c 8-i.c 269ms 0.9ms 0.9MB 257ms 0ms zigcc 0.11.0-dev.632+d69e97ae1
rust 7-i.rs 309ms 0.3ms 1.1MB 297ms 0ms rustc 1.65.0
c 8-i.c 329ms 0.5ms 1.3MB 320ms 0ms gcc 12.2.0
c 5.c 334ms 0.9ms 1.3MB 320ms 0ms gcc 12.2.0
rust 3.rs 338ms 4.8ms 1.1MB 323ms 0ms rustc 1.67.0-nightly
rust 2.rs 345ms 2.8ms 1.0MB 333ms 0ms rustc 1.65.0
cpp 1.cpp 346ms 6.4ms 1.4MB 333ms 0ms clang++ 14.0.0
c 5.c 354ms 0.8ms 1.4MB 343ms 0ms clang 14.0.0
c 5.c 354ms 1.6ms 1.0MB 340ms 0ms zigcc 0.11.0-dev.632+d69e97ae1
cpp 1.cpp 356ms 0.3ms 1.4MB 347ms 0ms g++ 12.2.0
c 2.c 362ms 0.6ms 1.0MB 350ms 0ms zigcc 0.11.0-dev.632+d69e97ae1
c 8-i.c 370ms 19ms 1.4MB 360ms 0ms clang 14.0.0
zig 1.zig 377ms 0.2ms 1.0MB 370ms 0ms zig 0.11.0-dev.632+d69e97ae1
c 2.c 379ms 8.8ms 1.4MB 367ms 0ms clang 14.0.0
nim 2.nim 403ms 0.4ms 1.4MB 390ms 0ms nim 1.6.10
chapel 2.chpl 403ms 3.5ms 24.4MB 383ms 3ms chpl 1.28.0
rust 1.rs 406ms 7.9ms 1.0MB 393ms 0ms rustc 1.65.0
nim 2.nim 412ms 1.8ms 1.3MB 400ms 0ms nim/clang 1.6.10
csharp 9.cs 443ms 6.8ms 101.9MB 393ms 20ms dotnet 7.0.100
swift 7.swift 447ms 0.3ms 5.1MB 440ms 0ms swift 5.7.1
d 1.d 463ms 1.0ms 1.5MB 450ms 0ms ldc2 1.30.0
d 2.d 477ms 8.0ms 1.5MB 467ms 0ms ldc2 1.30.0
c 2.c 480ms 1.0ms 1.3MB 470ms 0ms gcc 12.2.0
go 1.go 504ms 1.6ms 2.9MB 490ms 0ms go 1.19.4
julia 7.jl 545ms 3.1ms 169.6MB 500ms 133ms julia/aot 1.8.3
ocaml 1.ml 547ms 0.0ms 2.5MB 537ms 0ms ocaml 4.14.0
wasm 1.rs 563ms 12ms 11.4MB 547ms 0ms wasmtime 3.0.1
crystal 1.cr 564ms 1.5ms 2.9MB 550ms 0ms crystal 1.6.2
csharp 8.cs 576ms 0.7ms 8.1MB 573ms 0ms dotnet/aot 7.0.100
java 1.java 576ms 2.6ms 87.1MB 587ms 37ms graal/jvm 17.0.5
crystal 2.cr 577ms 0.1ms 3.0MB 567ms 0ms crystal 1.6.2
wasm 1.rs 595ms 13ms 15.8MB 583ms 0ms wasmedgec 0.11.2
dart 3.dart 611ms 15ms 13.9MB 600ms 0ms dart/exe 2.18.5
csharp 8.cs 617ms 12ms 102.3MB 563ms 23ms dotnet 7.0.100
kotlin 1.kt 635ms 15ms 43.1MB 633ms 20ms kotlin/jvm 17.0.2
java 1.java 639ms 3.0ms 40.2MB 643ms 17ms openjdk 20
java 1.java 646ms 5.7ms 43.3MB 643ms 23ms openjdk 19
wasm 1.rs 654ms 3.6ms 52.3MB 667ms 13ms node 16.18.1
kotlin 1n.kt 677ms 0.5ms 1.5MB 667ms 0ms kotlin/native 1.7.22
java 1.java 693ms 13ms 43.3MB 637ms 67ms openjdk/zgc 19
julia 7.jl 693ms 2.3ms 223.3MB 643ms 137ms julia 1.8.3
javascript 6.js 703ms 2.6ms 49.1MB 690ms 7ms node 19.2.0
go 1.go 704ms 1.1ms 0.0MB 690ms 0ms tinygo 0.25.0
typescript 6.ts 741ms 12ms 41.0MB 723ms 7ms deno 1.28.3
wasm 2.rs 809ms 0.6ms 11.6MB 800ms 0ms wasmtime 3.0.1
wasm 2.rs 832ms 0.4ms 16.7MB 820ms 0ms wasmedgec 0.11.2
wasm 2.rs 877ms 11ms 49.2MB 897ms 3ms node 16.18.1
v 1.v 885ms 0.9ms 2.3MB 877ms 0ms v/clang+gc 0.3.2
v 1.v 890ms 24ms 2.3MB 880ms 0ms v/clang 0.3.2
javascript 6.js 1044ms 0.9ms 68.3MB 1030ms 10ms bun 0.3.0
haxe 2.hx 1085ms 3.3ms 2.3MB 1073ms 0ms haxe/hl/c 4.2.5
lua 4.lua 1126ms 12ms 1.4MB 1113ms 0ms luajit 2.1.0-beta3
ruby 2.rb 1219ms 32ms 305.7MB 1467ms 93ms truffleruby 22.3.0
d 1.d 1235ms 0.8ms 2.4MB 1220ms 0ms dmd 2.101.0
csharp 8.cs 1279ms 0.9ms 25.0MB 1260ms 0ms mono 6.12.0
haxe 3.hx 1457ms 4.7ms 27.6MB 1747ms 33ms haxe/cpp 4.2.5
haxe 1.hx 1489ms 39ms 2.3MB 1473ms 0ms haxe/hl/c 4.2.5
python 2.py 1980ms 13ms 71.2MB 1947ms 17ms pypy 3.9.15
java 2.java 2094ms 4.8ms 528.4MB 2043ms 157ms openjdk 19
java 2.java 2114ms 45ms 532.5MB 2100ms 157ms openjdk 20
odin 1.odin 2360ms 18ms 1.3MB 2350ms 0ms odin 2022
haxe 2.hx 2480ms 53ms 3.3MB 2467ms 0ms haxe/hl/jit 1.13.0
haxe 1.hx 2670ms 60ms 3.2MB 2657ms 0ms haxe/hl/jit 1.13.0
java 2.java 2729ms 7.2ms 1159.4MB 2147ms 783ms openjdk/zgc 19
d 2.d 2780ms 1.8ms 2.4MB 2770ms 0ms dmd 2.101.0
python 1.py 3619ms 6.8ms 70.3MB 3590ms 10ms pypy 3.9.15
haxe 1.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/cpp 4.2.5
haxe 2.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/cpp 4.2.5
haxe 3.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/hl/c 4.2.5
haxe 3.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/hl/jit 1.13.0
lua 4.lua timeout 0.0ms 0.0MB 0ms 0ms lua 5.4.4
perl 2.pl timeout 0.0ms 0.0MB 0ms 0ms perl 5.36.0
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.11.1
python 2.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.11.1
python 1.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12
python 2.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12
ruby 2.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.3
ruby 2.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.3

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 21ms 0.7ms 1.4MB 10ms 0ms g++ 12.2.0
cpp 0-i.cpp 23ms 0.1ms 1.4MB 10ms 0ms clang++ 14.0.0
rust 4-i.rs 24ms 1.1ms 1.1MB 13ms 0ms rustc 1.65.0
zig 2.zig 27ms 0.2ms 1.1MB 20ms 0ms zig 0.11.0-dev.632+d69e97ae1
c 8-i.c 30ms 1.5ms 1.0MB 20ms 0ms zigcc 0.11.0-dev.632+d69e97ae1
rust 7-i.rs 33ms 0.4ms 1.0MB 27ms 0ms rustc 1.65.0
c 5.c 34ms 0.1ms 1.3MB 30ms 0ms gcc 12.2.0
c 8-i.c 36ms 0.4ms 1.3MB 27ms 0ms gcc 12.2.0
rust 3.rs 36ms 0.1ms 1.1MB 30ms 0ms rustc 1.67.0-nightly
c 5.c 37ms 0.1ms 1.0MB 30ms 0ms zigcc 0.11.0-dev.632+d69e97ae1
c 8-i.c 37ms 1.1ms 1.4MB 30ms 0ms clang 14.0.0
cpp 1.cpp 38ms 0.5ms 1.4MB 30ms 0ms clang++ 14.0.0
rust 2.rs 38ms 1.1ms 1.1MB 27ms 0ms rustc 1.65.0
c 5.c 38ms 0.6ms 1.4MB 30ms 0ms clang 14.0.0
c 2.c 38ms 0.1ms 1.0MB 27ms 0ms zigcc 0.11.0-dev.632+d69e97ae1
cpp 1.cpp 39ms 0.4ms 1.3MB 30ms 0ms g++ 12.2.0
zig 1.zig 41ms 1.5ms 1.1MB 30ms 0ms zig 0.11.0-dev.632+d69e97ae1
nim 2.nim 42ms 0.4ms 1.3MB 30ms 0ms nim 1.6.10
nim 2.nim 43ms 0.4ms 2.1MB 30ms 0ms nim/clang 1.6.10
rust 1.rs 44ms 1.3ms 1.0MB 33ms 0ms rustc 1.65.0
c 2.c 45ms 3.8ms 1.4MB 30ms 0ms clang 14.0.0
swift 7.swift 48ms 0.5ms 5.1MB 40ms 0ms swift 5.7.1
d 1.d 49ms 0.8ms 1.5MB 40ms 0ms ldc2 1.30.0
d 2.d 51ms 0.8ms 1.5MB 40ms 0ms ldc2 1.30.0
c 2.c 53ms 2.2ms 1.3MB 40ms 0ms gcc 12.2.0
go 1.go 53ms 0.6ms 2.9MB 43ms 0ms go 1.19.4
chapel 2.chpl 56ms 1.9ms 24.4MB 40ms 3ms chpl 1.28.0
ocaml 1.ml 58ms 1.1ms 2.5MB 50ms 0ms ocaml 4.14.0
crystal 1.cr 59ms 0.0ms 2.9MB 50ms 0ms crystal 1.6.2
crystal 2.cr 60ms 0.3ms 2.9MB 50ms 0ms crystal 1.6.2
wasm 1.rs 64ms 0.7ms 10.7MB 53ms 3ms wasmtime 3.0.1
csharp 8.cs 66ms 3.2ms 10.1MB 60ms 0ms dotnet/aot 7.0.100
wasm 1.rs 68ms 0.6ms 15.8MB 50ms 0ms wasmedgec 0.11.2
kotlin 1n.kt 71ms 1.2ms 1.5MB 60ms 0ms kotlin/native 1.7.22
dart 3.dart 72ms 1.2ms 13.8MB 53ms 0ms dart/exe 2.18.5
go 1.go 74ms 1.5ms 2.0MB 60ms 0ms tinygo 0.25.0
wasm 2.rs 88ms 0.4ms 11.3MB 77ms 0ms wasmtime 3.0.1
wasm 2.rs 91ms 1.0ms 15.8MB 80ms 0ms wasmedgec 0.11.2
v 1.v 91ms 0.1ms 2.3MB 80ms 0ms v/clang+gc 0.3.2
v 1.v 93ms 2.3ms 2.3MB 83ms 0ms v/clang 0.3.2
typescript 6.ts 107ms 0.2ms 38.3MB 87ms 10ms deno 1.28.3
haxe 2.hx 112ms 0.6ms 2.4MB 100ms 0ms haxe/hl/c 4.2.5
lua 4.lua 115ms 2.5ms 1.5MB 107ms 0ms luajit 2.1.0-beta3
javascript 6.js 125ms 0.6ms 63.7MB 113ms 10ms bun 0.3.0
csharp 9.cs 126ms 2.4ms 100.2MB 73ms 20ms dotnet 7.0.100
d 1.d 127ms 0.7ms 2.3MB 120ms 0ms dmd 2.101.0
javascript 6.js 130ms 1.2ms 49.3MB 117ms 10ms node 19.2.0
csharp 8.cs 141ms 4.7ms 100.3MB 90ms 23ms dotnet 7.0.100
kotlin 1.kt 147ms 3.4ms 42.9MB 153ms 13ms kotlin/jvm 17.0.2
haxe 1.hx 150ms 0.7ms 2.3MB 140ms 0ms haxe/hl/c 4.2.5
csharp 8.cs 150ms 0.7ms 25.0MB 133ms 3ms mono 6.12.0
java 1.java 151ms 3.8ms 83.2MB 173ms 23ms graal/jvm 17.0.5
wasm 1.rs 152ms 3.5ms 48.6MB 173ms 3ms node 16.18.1
java 1.java 160ms 10ms 40.2MB 170ms 17ms openjdk 20
java 1.java 161ms 12ms 42.3MB 157ms 20ms openjdk 19
haxe 3.hx 168ms 7.3ms 27.7MB 177ms 10ms haxe/cpp 4.2.5
wasm 2.rs 176ms 0.9ms 49.1MB 190ms 10ms node 16.18.1
java 1.java 210ms 5.7ms 42.3MB 157ms 73ms openjdk/zgc 19
odin 1.odin 238ms 0.6ms 1.3MB 223ms 0ms odin 2022
haxe 2.hx 250ms 1.1ms 3.4MB 240ms 0ms haxe/hl/jit 1.13.0
python 2.py 251ms 1.7ms 70.9MB 223ms 10ms pypy 3.9.15
julia 7.jl 263ms 4.1ms 168.5MB 207ms 120ms julia/aot 1.8.3
haxe 1.hx 272ms 6.4ms 3.2MB 263ms 0ms haxe/hl/jit 1.13.0
d 2.d 281ms 0.6ms 2.3MB 270ms 0ms dmd 2.101.0
python 1.py 409ms 0.4ms 70.2MB 387ms 10ms pypy 3.9.15
julia 7.jl 414ms 0.6ms 223.9MB 340ms 160ms julia 1.8.3
ruby 2-m.rb 447ms 28ms 316.0MB 653ms 127ms truffleruby 22.3.0
java 2.java 454ms 6.0ms 339.6MB 493ms 87ms openjdk 19
java 2.java 463ms 15ms 349.8MB 483ms 107ms openjdk 20
haxe 3.hx 700ms 12ms 3.2MB 630ms 57ms haxe/hl/c 4.2.5
java 2.java 779ms 3.8ms 500.2MB 547ms 370ms openjdk/zgc 19
haxe 3.hx 840ms 18ms 3.8MB 770ms 50ms haxe/hl/jit 1.13.0
haxe 2.hx 864ms 4.3ms 3.2MB 853ms 0ms haxe/cpp 4.2.5
haxe 1.hx 1050ms 15ms 3.2MB 1037ms 0ms haxe/cpp 4.2.5
python 1.py 1182ms 5.1ms 8.3MB 1167ms 0ms pyston 3.8.12
lua 4.lua 1589ms 72ms 1.4MB 1580ms 0ms lua 5.4.4
python 2.py 1652ms 71ms 7.9MB 1640ms 0ms pyston 3.8.12
ruby 2.rb 2409ms 3.5ms 286.9MB 2243ms 147ms ruby/yjit 3.1.3
perl 2.pl 3095ms 84ms 6.2MB 3083ms 0ms perl 5.36.0
python 1.py 3191ms 127ms 8.4MB 3180ms 0ms cpython 3.11.1
ruby 2.rb 3443ms 15ms 30.0MB 3420ms 13ms ruby 3.1.3
python 2.py 3533ms 39ms 8.7MB 3517ms 0ms cpython 3.11.1