All nbody problem benchmarks

Current benchmark data was generated on Wed Mar 22 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.)

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 225ms 0.8ms 1.3MB 213ms 0ms g++ 12.2.0
cpp 0-i.cpp 253ms 0.2ms 1.5MB 243ms 0ms clang++ 14.0.0
rust 4-i.rs 257ms 0.1ms 1.0MB 247ms 0ms rustc 1.68.0
c 8-i.c 312ms 2.0ms 1.3MB 300ms 0ms zigcc 0.11.0-dev.2227+f9b582950
rust 7-i.rs 321ms 0.3ms 1.1MB 310ms 0ms rustc 1.68.0
c 5.c 322ms 1.0ms 1.3MB 310ms 0ms gcc 12.2.0
zig 2.zig 325ms 39ms 1.1MB 313ms 0ms zig 0.11.0-dev.2227+f9b582950
cpp 1.cpp 326ms 1.2ms 1.5MB 313ms 0ms clang++ 14.0.0
c 5.c 329ms 0.5ms 1.4MB 317ms 0ms clang 14.0.0
c 5.c 330ms 1.2ms 1.0MB 320ms 0ms zigcc 0.11.0-dev.2227+f9b582950
rust 3.rs 339ms 0.6ms 1.1MB 323ms 0ms rustc 1.70.0-nightly
c 2.c 339ms 0.4ms 1.2MB 330ms 0ms zigcc 0.11.0-dev.2227+f9b582950
c 2.c 341ms 0.6ms 1.4MB 330ms 0ms clang 14.0.0
cpp 1.cpp 342ms 1.0ms 1.3MB 330ms 0ms g++ 12.2.0
rust 2.rs 343ms 4.4ms 1.0MB 333ms 0ms rustc 1.68.0
zig 1.zig 364ms 1.1ms 1.0MB 353ms 0ms zig 0.11.0-dev.2227+f9b582950
c 8-i.c 365ms 3.7ms 1.4MB 353ms 0ms clang 14.0.0
c 8-i.c 365ms 0.7ms 1.3MB 357ms 0ms gcc 12.2.0
chapel 2.chpl 374ms 0.5ms 32.2MB 360ms 7ms chpl 1.29.0
nim 2.nim 382ms 0.7ms 1.3MB 370ms 0ms nim 1.6.12
rust 1.rs 387ms 0.6ms 1.0MB 380ms 0ms rustc 1.68.0
nim 2.nim 410ms 0.4ms 1.3MB 400ms 0ms nim/clang 1.6.12
csharp 9.cs 413ms 0.5ms 27.4MB 380ms 7ms dotnet 7.0.202
go 1.go 429ms 0.3ms 2.0MB 420ms 0ms tinygo 0.27.0
d 1.d 450ms 0.3ms 1.6MB 440ms 0ms ldc2 1.31.0
swift 7.swift 454ms 12ms 5.1MB 427ms 0ms swift 5.7.3
go 1.go 459ms 3.6ms 2.9MB 450ms 0ms go 1.20.2
d 2.d 468ms 0.4ms 1.6MB 460ms 0ms ldc2 1.31.0
ocaml 1.ml 469ms 0.4ms 2.8MB 460ms 0ms ocaml 5.0.0
wasm 1.rs 476ms 7.0ms 12.3MB 463ms 0ms wasmtime 7.0.0
csharp 8.cs 495ms 0.9ms 14.2MB 497ms 0ms dotnet/aot 7.0.202
wasm 1.rs 501ms 0.5ms 16.0MB 487ms 0ms wasmedgec 0.11.2
crystal 1.cr 515ms 0.7ms 2.9MB 500ms 0ms crystal 1.7.3
dart 3.dart 525ms 2.8ms 11.9MB 507ms 3ms dart/exe 3.0.0-339.0.dev
dart 3.dart 528ms 2.3ms 11.8MB 510ms 0ms dart/exe 2.19.5
csharp 8.cs 534ms 5.1ms 25.9MB 507ms 3ms dotnet 7.0.202
crystal 2.cr 537ms 0.7ms 2.9MB 527ms 0ms crystal 1.7.3
java 1.java 547ms 1.0ms 87.4MB 573ms 23ms graal/jvm 17.0.6
julia 7.jl 552ms 0.4ms 169.2MB 517ms 113ms julia/aot 1.8.5
odin 1-i.odin 552ms 0.8ms 1.2MB 540ms 0ms odin 2023
kotlin 1n.kt 562ms 26ms 1.5MB 550ms 0ms kotlin/native 1.8.10
java 1.java 570ms 5.1ms 44.0MB 570ms 17ms openjdk 19
java 1.java 571ms 8.8ms 42.0MB 587ms 13ms openjdk 21
kotlin 1.kt 582ms 3.1ms 42.7MB 587ms 13ms kotlin/jvm 17.0.2
javascript 6.js 606ms 5.0ms 47.8MB 593ms 7ms node 19.8.1
c 2.c 624ms 0.5ms 1.3MB 613ms 0ms gcc 12.2.0
java 1.java 625ms 10ms 43.6MB 590ms 57ms openjdk/zgc 19
typescript 6.ts 648ms 3.2ms 46.1MB 633ms 0ms deno 1.31.3
wasm 2.rs 688ms 10ms 12.3MB 673ms 0ms wasmtime 7.0.0
wasm 2.rs 697ms 7.3ms 16.0MB 680ms 0ms wasmedgec 0.11.2
julia 7.jl 721ms 4.4ms 225.5MB 673ms 123ms julia 1.8.5
wasm 1.rs 733ms 1.2ms 48.9MB 713ms 10ms node 18.15.0
v 1.v 870ms 0.2ms 2.2MB 860ms 0ms v/clang 0.3.3
v 1.v 884ms 19ms 2.3MB 870ms 0ms v/clang+gc 0.3.3
wasm 2.rs 951ms 1.3ms 49.0MB 933ms 7ms node 18.15.0
haxe 2.hx 980ms 11ms 2.4MB 970ms 0ms haxe/hl/c 4.2.5
javascript 6.js 1019ms 3.4ms 70.5MB 1000ms 13ms bun 0.5.8
ruby 2.rb 1041ms 6.3ms 305.3MB 1223ms 103ms truffleruby 22.3.1
lua 4.lua 1108ms 15ms 2.2MB 1097ms 0ms luajit 2.1.0-beta3
csharp 8.cs 1113ms 6.3ms 24.4MB 1097ms 0ms mono 6.12.0
haxe 1.hx 1334ms 50ms 2.3MB 1323ms 0ms haxe/hl/c 4.2.5
haxe 3.hx 1418ms 5.0ms 27.6MB 1763ms 30ms haxe/cpp 4.2.5
d 1.d 1542ms 1.2ms 2.9MB 1530ms 0ms dmd 2.102.2
codon 1.py 1872ms 2.9ms 7.2MB 1857ms 0ms codon 0.15.5
java 2.java 1937ms 11ms 537.8MB 1967ms 113ms openjdk 21
java 2.java 1958ms 7.7ms 509.5MB 1973ms 130ms openjdk 19
d 2.d 2285ms 14ms 2.9MB 2273ms 0ms dmd 2.102.2
haxe 2.hx 2306ms 2.5ms 3.2MB 2297ms 0ms haxe/hl/jit 1.13.0
python 2.py 2360ms 24ms 77.2MB 2330ms 13ms pypy 3.9.16
haxe 1.hx 2514ms 2.3ms 3.3MB 2500ms 0ms haxe/hl/jit 1.13.0
java 2.java 2631ms 16ms 1214.9MB 2033ms 783ms openjdk/zgc 19
odin 1.odin 2881ms 0.2ms 1.3MB 2870ms 0ms odin 2023
python 1.py 3530ms 68ms 76.3MB 3503ms 10ms pypy 3.9.16
haxe 1.hx timeout 0.0ms 3.2MB 4987ms 0ms haxe/cpp 4.2.5
haxe 2.hx timeout 0.0ms 3.2MB 4983ms 0ms haxe/cpp 4.2.5
haxe 3.hx timeout 0.0ms 3.3MB 4507ms 477ms haxe/hl/c 4.2.5
haxe 3.hx timeout 0.0ms 3.7MB 4620ms 363ms haxe/hl/jit 1.13.0
lua 4.lua timeout 0.0ms 1.4MB 4987ms 0ms lua 5.4.4
perl 2.pl timeout 0.0ms 6.2MB 4987ms 0ms perl 5.36.0
python 1.py timeout 0.0ms 8.5MB 4983ms 0ms cpython 3.11.2
python 2.py timeout 0.0ms 8.6MB 4987ms 0ms cpython 3.11.2
python 1.py timeout 0.0ms 8.3MB 4983ms 0ms pyston 3.8.12
python 2.py timeout 0.0ms 8.0MB 4987ms 0ms pyston 3.8.12
ruby 2.rb timeout 0.0ms 32.2MB 4970ms 13ms ruby 3.2.1
ruby 2.rb timeout 0.0ms 33.0MB 4977ms 3ms ruby/yjit 3.2.1

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 25ms 0.2ms 1.3MB 20ms 0ms g++ 12.2.0
cpp 0-i.cpp 28ms 0.2ms 1.4MB 20ms 0ms clang++ 14.0.0
rust 4-i.rs 29ms 0.8ms 1.0MB 20ms 0ms rustc 1.68.0
zig 2.zig 33ms 0.8ms 1.1MB 23ms 0ms zig 0.11.0-dev.2227+f9b582950
c 5.c 34ms 0.3ms 1.3MB 27ms 0ms gcc 12.2.0
c 8-i.c 35ms 2.4ms 1.3MB 27ms 0ms zigcc 0.11.0-dev.2227+f9b582950
c 5.c 35ms 0.5ms 1.0MB 27ms 0ms zigcc 0.11.0-dev.2227+f9b582950
cpp 1.cpp 35ms 0.4ms 1.4MB 23ms 0ms clang++ 14.0.0
rust 7-i.rs 36ms 0.9ms 1.0MB 23ms 0ms rustc 1.68.0
c 2.c 36ms 0.2ms 1.2MB 27ms 0ms zigcc 0.11.0-dev.2227+f9b582950
rust 2.rs 36ms 0.3ms 1.0MB 30ms 0ms rustc 1.68.0
c 5.c 37ms 2.4ms 1.4MB 30ms 0ms clang 14.0.0
rust 3.rs 37ms 1.3ms 1.0MB 23ms 0ms rustc 1.70.0-nightly
cpp 1.cpp 38ms 0.8ms 1.4MB 30ms 0ms g++ 12.2.0
c 8-i.c 39ms 0.2ms 1.3MB 30ms 0ms gcc 12.2.0
c 2.c 39ms 1.8ms 1.4MB 27ms 0ms clang 14.0.0
c 8-i.c 39ms 0.2ms 1.4MB 30ms 0ms clang 14.0.0
zig 1.zig 39ms 1.0ms 1.1MB 30ms 0ms zig 0.11.0-dev.2227+f9b582950
nim 2.nim 41ms 0.7ms 1.3MB 30ms 0ms nim 1.6.12
rust 1.rs 41ms 0.6ms 1.0MB 30ms 0ms rustc 1.68.0
nim 2.nim 43ms 0.6ms 1.2MB 30ms 0ms nim/clang 1.6.12
go 1.go 45ms 0.3ms 2.0MB 40ms 0ms tinygo 0.27.0
go 1.go 49ms 2.4ms 2.9MB 40ms 0ms go 1.20.2
d 2.d 50ms 0.5ms 1.6MB 40ms 0ms ldc2 1.31.0
ocaml 1.ml 50ms 0.2ms 2.8MB 40ms 0ms ocaml 5.0.0
d 1.d 51ms 3.7ms 1.6MB 40ms 0ms ldc2 1.31.0
swift 7.swift 54ms 1.1ms 5.1MB 40ms 0ms swift 5.7.3
wasm 1.rs 55ms 0.4ms 12.2MB 50ms 0ms wasmtime 7.0.0
crystal 1.cr 55ms 1.6ms 2.9MB 47ms 0ms crystal 1.7.3
csharp 8.cs 57ms 0.8ms 12.1MB 53ms 0ms dotnet/aot 7.0.202
crystal 2.cr 57ms 0.7ms 2.9MB 47ms 0ms crystal 1.7.3
wasm 1.rs 57ms 0.3ms 16.2MB 43ms 0ms wasmedgec 0.11.2
odin 1-i.odin 58ms 0.2ms 1.3MB 50ms 0ms odin 2023
chapel 2.chpl 58ms 1.4ms 32.2MB 47ms 3ms chpl 1.29.0
kotlin 1n.kt 60ms 2.5ms 1.5MB 50ms 0ms kotlin/native 1.8.10
dart 3.dart 61ms 1.4ms 12.2MB 50ms 0ms dart/exe 3.0.0-339.0.dev
c 2.c 68ms 4.0ms 1.3MB 60ms 0ms gcc 12.2.0
wasm 2.rs 75ms 0.4ms 12.3MB 70ms 0ms wasmtime 7.0.0
wasm 2.rs 77ms 1.1ms 15.3MB 67ms 0ms wasmedgec 0.11.2
v 1.v 90ms 0.7ms 2.4MB 80ms 0ms v/clang+gc 0.3.3
v 1.v 92ms 3.3ms 2.3MB 80ms 0ms v/clang 0.3.3
haxe 2.hx 101ms 1.2ms 2.4MB 90ms 0ms haxe/hl/c 4.2.5
typescript 6.ts 105ms 2.5ms 43.8MB 83ms 10ms deno 1.31.3
javascript 6.js 106ms 1.9ms 47.8MB 93ms 7ms node 19.8.1
csharp 9.cs 106ms 0.8ms 29.7MB 70ms 3ms dotnet 7.0.202
csharp 8.cs 112ms 4.2ms 29.6MB 80ms 3ms dotnet 7.0.202
lua 4.lua 114ms 0.5ms 1.4MB 103ms 0ms luajit 2.1.0-beta3
wasm 1.rs 126ms 6.5ms 49.5MB 107ms 7ms node 18.15.0
haxe 1.hx 127ms 0.6ms 2.3MB 117ms 0ms haxe/hl/c 4.2.5
javascript 6.js 129ms 4.4ms 66.6MB 120ms 7ms bun 0.5.8
csharp 8.cs 133ms 0.5ms 24.9MB 120ms 0ms mono 6.12.0
kotlin 1.kt 142ms 1.5ms 42.9MB 147ms 13ms kotlin/jvm 17.0.2
wasm 2.rs 143ms 0.6ms 48.3MB 133ms 3ms node 18.15.0
java 1.java 147ms 8.0ms 89.7MB 177ms 23ms graal/jvm 17.0.6
java 1.java 155ms 7.2ms 42.3MB 167ms 7ms openjdk 19
java 1.java 158ms 2.4ms 42.3MB 173ms 13ms openjdk 21
d 1.d 159ms 2.2ms 2.8MB 150ms 0ms dmd 2.102.2
haxe 3.hx 160ms 3.3ms 25.6MB 177ms 7ms haxe/cpp 4.2.5
codon 1.py 192ms 0.2ms 5.4MB 180ms 0ms codon 0.15.5
java 1.java 196ms 1.5ms 41.9MB 153ms 63ms openjdk/zgc 19
d 2.d 232ms 2.6ms 2.8MB 223ms 0ms dmd 2.102.2
haxe 2.hx 241ms 10ms 3.3MB 230ms 0ms haxe/hl/jit 1.13.0
julia 7.jl 251ms 6.2ms 169.1MB 220ms 100ms julia/aot 1.8.5
haxe 1.hx 264ms 11ms 3.1MB 253ms 0ms haxe/hl/jit 1.13.0
python 2.py 288ms 7.8ms 77.1MB 263ms 10ms pypy 3.9.16
odin 1.odin 291ms 0.5ms 1.2MB 280ms 0ms odin 2023
python 1.py 395ms 4.4ms 76.5MB 360ms 17ms pypy 3.9.16
ruby 2-m.rb 403ms 15ms 307.3MB 623ms 83ms truffleruby 22.3.1
julia 7.jl 409ms 5.2ms 223.7MB 363ms 123ms julia 1.8.5
java 2.java 440ms 7.3ms 325.2MB 500ms 80ms openjdk 19
java 2.java 441ms 4.3ms 345.1MB 493ms 83ms openjdk 21
haxe 3.hx 640ms 8.2ms 3.2MB 573ms 50ms haxe/hl/c 4.2.5
java 2.java 695ms 0.6ms 440.4MB 543ms 300ms openjdk/zgc 19
dart 3.dart 728ms 576ms 13.9MB 50ms 0ms dart/exe 2.19.5
haxe 3.hx 787ms 6.7ms 3.7MB 737ms 30ms haxe/hl/jit 1.13.0
haxe 2.hx 854ms 2.3ms 3.2MB 843ms 0ms haxe/cpp 4.2.5
haxe 1.hx 1045ms 1.9ms 3.2MB 1033ms 0ms haxe/cpp 4.2.5
lua 4.lua 1173ms 8.8ms 1.4MB 1163ms 0ms lua 5.4.4
python 1.py 1272ms 110ms 8.4MB 1257ms 3ms pyston 3.8.12
python 2.py 1600ms 1.1ms 7.9MB 1590ms 0ms pyston 3.8.12
ruby 2.rb 2132ms 5.5ms 32.9MB 2103ms 13ms ruby/yjit 3.2.1
ruby 2.rb 3199ms 11ms 32.2MB 3180ms 3ms ruby 3.2.1
perl 2.pl 3223ms 14ms 6.2MB 3210ms 0ms perl 5.36.0
python 2.py 3294ms 5.4ms 8.6MB 3280ms 0ms cpython 3.11.2
python 1.py 3542ms 392ms 8.4MB 3530ms 0ms cpython 3.11.2