All nbody problem 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.)

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
rust 4-i.rs 168ms 9.4ms 1.9MB 157ms 0ms rustc 1.75.0
cpp 0-i.cpp 172ms 3.6ms 2.3MB 163ms 0ms clang++ 14.0.0-1ubuntu1.1
rust 7-i.rs 222ms 0.8ms 1.9MB 210ms 0ms rustc 1.75.0
c 8-i.c 245ms 0.5ms 1.5MB 233ms 0ms zigcc 0.12.0-dev.2341+92211135f
c 8-i.c 255ms 1.1ms 2.3MB 243ms 0ms gcc 13.2.0
zig 2.zig 276ms 0.5ms 1.1MB 267ms 0ms zig 0.12.0-dev.2341+92211135f
rust 3.rs 285ms 0.7ms 1.9MB 277ms 0ms rustc 1.77.0-nightly
rust 2.rs 288ms 0.4ms 1.8MB 273ms 0ms rustc 1.75.0
c 5.c 297ms 0.4ms 1.5MB 287ms 0ms zigcc 0.12.0-dev.2341+92211135f
c 8-i.c 301ms 1.9ms 2.1MB 290ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 309ms 0.5ms 2.3MB 300ms 0ms gcc 13.2.0
c 2.c 311ms 1.1ms 1.5MB 300ms 0ms zigcc 0.12.0-dev.2341+92211135f
c 5.c 311ms 1.0ms 2.3MB 300ms 0ms gcc 13.2.0
v 1.v 312ms 0.3ms 1.6MB 300ms 0ms v/clang 0.4.4
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
c 5.c 314ms 1.5ms 2.1MB 303ms 0ms clang 14.0.0-1ubuntu1.1
zig 1.zig 314ms 0.6ms 1.3MB 310ms 0ms zig 0.12.0-dev.2341+92211135f
nim 2.nim 318ms 1.0ms 1.8MB 310ms 0ms nim 2.0.2
c 2.c 318ms 3.6ms 2.1MB 303ms 0ms clang 14.0.0-1ubuntu1.1
v 1.v 328ms 29ms 2.4MB 317ms 0ms v/clang+gc 0.4.4
chapel 2.chpl 329ms 2.0ms 32.8MB 313ms 7ms chpl 1.31.0
rust 1.rs 338ms 1.1ms 1.9MB 330ms 0ms rustc 1.75.0
crystal 1.cr 342ms 0.8ms 3.5MB 330ms 0ms crystal 1.11.2
nim 2.nim 343ms 3.5ms 2.0MB 333ms 0ms nim/clang 2.0.2
crystal 2.cr 348ms 10ms 3.5MB 337ms 0ms crystal 1.11.2
go 1.go 348ms 1.1ms 2.1MB 340ms 0ms tinygo 0.30.0
swift 7.swift 355ms 2.9ms 9.4MB 340ms 0ms swift 5.9.2
d 2.d 359ms 0.7ms 2.9MB 350ms 0ms ldc2 1.36.0
d 1.d 361ms 0.8ms 2.9MB 350ms 0ms ldc2 1.36.0
go 1.go 364ms 0.9ms 3.3MB 350ms 0ms go 1.21.6
ocaml 1.ml 373ms 3.1ms 3.3MB 360ms 0ms ocaml 5.1.1
csharp 8.cs 375ms 1.6ms 14.2MB 370ms 3ms dotnet/aot 8.0.101
csharp 9.cs 383ms 7.2ms 33.1MB 343ms 10ms dotnet 8.0.101
kotlin 1n.kt 406ms 3.4ms 4.6MB 393ms 0ms kotlin/native 1.8.21
odin 1-i.odin 412ms 1.8ms 1.8MB 400ms 0ms odin 2024
csharp 8.cs 433ms 3.3ms 32.9MB 393ms 7ms dotnet 8.0.101
kotlin 1.kt 442ms 1.8ms 49.2MB 497ms 7ms kotlin/jvm 21
java 1.java 443ms 1.2ms 47.6MB 487ms 13ms openjdk 23
java 1.java 444ms 1.9ms 45.4MB 477ms 20ms openjdk 21
dart 3.dart 447ms 0.3ms 6.3MB 437ms 0ms dart/exe 3.2.6
wasm 1.rs 448ms 1.3ms 18.8MB 430ms 0ms wasmtime 17.0.0
java 1.java 455ms 6.6ms 86.8MB 483ms 30ms graal/jvm 17.0.8
typescript 6.ts 456ms 4.6ms 57.6MB 440ms 7ms deno 1.40.2
javascript 6.js 499ms 10ms 49.9MB 483ms 7ms node 21.6.1
java 1.java 559ms 4.6ms 46.7MB 480ms 133ms openjdk/zgc 21
wasm 2.rs 569ms 0.7ms 18.8MB 557ms 0ms wasmtime 17.0.0
d 1.d 673ms 1.2ms 4.4MB 660ms 0ms dmd 2.106.1
javascript 6.js 704ms 2.9ms 81.5MB 703ms 3ms bun 1.0.25
lua 4.lua 707ms 1.1ms 2.4MB 697ms 0ms luajit 2.1.0-beta3
wasm 1.rs 787ms 145ms 50.0MB 773ms 7ms node 18.19.0
haxe 2.hx 850ms 3.3ms 5.0MB 837ms 0ms haxe/hl/c 4.3.3
wasm 2.rs 871ms 3.1ms 51.1MB 860ms 7ms node 18.19.0
ruby 2.rb 953ms 118ms 319.9MB 1190ms 110ms truffleruby 23.1.2
haxe 1.hx 1043ms 7.8ms 5.0MB 1030ms 0ms haxe/hl/c 4.3.3
java 2.java 1234ms 5.9ms 597.7MB 1363ms 77ms openjdk 23
java 2.java 1238ms 9.8ms 647.8MB 1373ms 80ms openjdk 21
csharp 8.cs 1248ms 6.8ms 24.9MB 1230ms 3ms mono 6.12.0
codon 1.py 1295ms 1.9ms 7.7MB 1287ms 0ms codon 0.16.3
haxe 3.hx 1381ms 4.5ms 28.1MB 1537ms 33ms haxe/cpp 4.3.3
python 2.py 1386ms 17ms 60.4MB 1357ms 17ms pypy 3.10.13
d 2.d 2011ms 6.9ms 4.5MB 2000ms 0ms dmd 2.106.1
haxe 2.hx 2397ms 5.9ms 5.7MB 2383ms 0ms haxe/hl/jit 1.14.0
haxe 1.hx 2470ms 4.7ms 5.7MB 2457ms 0ms haxe/hl/jit 1.14.0
python 1.py 2647ms 17ms 54.1MB 2617ms 10ms pypy 3.10.13
java 2.java 3177ms 56ms 2367.4MB 1670ms 1723ms openjdk/zgc 21
odin 1.odin 4417ms 16ms 1.6MB 4413ms 0ms odin 2024
haxe 1.hx timeout 0.0ms 4.9MB 4990ms 0ms haxe/cpp 4.3.3
haxe 2.hx timeout 0.0ms 4.9MB 4987ms 0ms haxe/cpp 4.3.3
haxe 3.hx timeout 0.0ms 5.4MB 3853ms 1630ms haxe/hl/c 4.3.3
haxe 3.hx timeout 0.0ms 6.0MB 4117ms 1320ms haxe/hl/jit 1.14.0
lua 4.lua timeout 0.0ms 2.3MB 4990ms 0ms lua 5.4.6
perl 2.pl timeout 0.0ms 6.3MB 4990ms 0ms perl 5.38.2
python 1.py timeout 0.0ms 9.1MB 4987ms 0ms cpython 3.12.1
python 2.py timeout 0.0ms 9.3MB 4990ms 0ms cpython 3.12.1
python 1.py timeout 0.0ms 8.3MB 4980ms 0ms pyston 3.8.12
python 2.py timeout 0.0ms 8.1MB 4983ms 0ms pyston 3.8.12
ruby 2.rb timeout 0.0ms 28.1MB 4967ms 17ms ruby 3.3.0
ruby 2.rb timeout 0.0ms 28.5MB 4963ms 20ms ruby/yjit 3.3.0

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
rust 4-i.rs 19ms 1.1ms 1.9MB 10ms 0ms rustc 1.75.0
cpp 0-i.cpp 19ms 0.2ms 2.3MB 10ms 0ms clang++ 14.0.0-1ubuntu1.1
rust 7-i.rs 25ms 0.5ms 1.9MB 13ms 0ms rustc 1.75.0
c 8-i.c 27ms 0.1ms 1.5MB 20ms 0ms zigcc 0.12.0-dev.2341+92211135f
c 8-i.c 28ms 0.5ms 2.3MB 20ms 0ms gcc 13.2.0
zig 2.zig 29ms 0.0ms 1.1MB 20ms 0ms zig 0.12.0-dev.2341+92211135f
rust 3.rs 31ms 0.2ms 1.8MB 20ms 0ms rustc 1.77.0-nightly
rust 2.rs 31ms 0.1ms 1.8MB 20ms 0ms rustc 1.75.0
c 5.c 32ms 0.4ms 1.5MB 20ms 0ms zigcc 0.12.0-dev.2341+92211135f
c 2.c 33ms 0.3ms 2.3MB 23ms 0ms gcc 13.2.0
c 8-i.c 33ms 1.6ms 2.1MB 27ms 0ms clang 14.0.0-1ubuntu1.1
c 5.c 33ms 0.5ms 2.3MB 27ms 0ms gcc 13.2.0
zig 1.zig 33ms 0.3ms 1.3MB 23ms 0ms zig 0.12.0-dev.2341+92211135f
cpp 1.cpp 34ms 0.4ms 2.3MB 20ms 0ms clang++ 14.0.0-1ubuntu1.1
v 1.v 34ms 0.5ms 1.6MB 27ms 0ms v/clang 0.4.4
cpp 1.cpp 34ms 0.9ms 1.8MB 27ms 0ms g++ 11.4.0
nim 2.nim 34ms 0.5ms 1.8MB 23ms 0ms nim 2.0.2
c 2.c 34ms 0.8ms 1.5MB 27ms 0ms zigcc 0.12.0-dev.2341+92211135f
c 2.c 34ms 0.9ms 2.1MB 27ms 0ms clang 14.0.0-1ubuntu1.1
c 5.c 34ms 1.1ms 2.1MB 27ms 0ms clang 14.0.0-1ubuntu1.1
v 1.v 34ms 1.0ms 2.4MB 20ms 0ms v/clang+gc 0.4.4
go 1.go 36ms 0.1ms 0.1MB 30ms 0ms tinygo 0.30.0
nim 2.nim 36ms 0.1ms 2.0MB 30ms 0ms nim/clang 2.0.2
rust 1.rs 37ms 1.1ms 1.8MB 30ms 0ms rustc 1.75.0
crystal 2.cr 37ms 0.5ms 3.5MB 27ms 0ms crystal 1.11.2
crystal 1.cr 39ms 1.2ms 3.6MB 30ms 0ms crystal 1.11.2
d 1.d 39ms 0.6ms 2.9MB 30ms 0ms ldc2 1.36.0
go 1.go 39ms 0.2ms 3.3MB 30ms 0ms go 1.21.6
d 2.d 39ms 0.4ms 2.9MB 27ms 0ms ldc2 1.36.0
ocaml 1.ml 40ms 0.9ms 3.3MB 30ms 0ms ocaml 5.1.1
odin 1-i.odin 44ms 0.8ms 1.6MB 37ms 0ms odin 2024
kotlin 1n.kt 44ms 0.9ms 4.6MB 33ms 0ms kotlin/native 1.8.21
csharp 8.cs 48ms 1.3ms 16.1MB 43ms 3ms dotnet/aot 8.0.101
swift 7.swift 50ms 8.4ms 9.4MB 40ms 0ms swift 5.9.2
dart 3.dart 50ms 0.8ms 6.1MB 40ms 0ms dart/exe 3.2.6
chapel 2.chpl 51ms 1.6ms 32.9MB 47ms 0ms chpl 1.31.0
wasm 1.rs 54ms 1.0ms 18.8MB 40ms 3ms wasmtime 17.0.0
wasm 2.rs 66ms 0.7ms 18.8MB 53ms 0ms wasmtime 17.0.0
d 1.d 71ms 1.0ms 4.5MB 60ms 0ms dmd 2.106.1
lua 4.lua 76ms 2.8ms 2.4MB 63ms 0ms luajit 2.1.0-beta3
typescript 6.ts 78ms 1.2ms 57.7MB 57ms 13ms deno 1.40.2
javascript 6.js 85ms 0.6ms 49.9MB 67ms 13ms node 21.6.1
haxe 2.hx 90ms 1.5ms 5.0MB 80ms 0ms haxe/hl/c 4.3.3
javascript 6.js 92ms 2.7ms 81.4MB 87ms 3ms bun 1.0.25
wasm 1.rs 104ms 2.6ms 50.1MB 93ms 10ms node 18.19.0
csharp 8.cs 106ms 7.9ms 33.2MB 67ms 10ms dotnet 8.0.101
haxe 1.hx 108ms 1.2ms 5.0MB 100ms 0ms haxe/hl/c 4.3.3
csharp 9.cs 114ms 2.8ms 33.1MB 77ms 10ms dotnet 8.0.101
java 1.java 119ms 1.1ms 45.5MB 147ms 23ms openjdk 21
java 1.java 120ms 0.2ms 47.8MB 153ms 20ms openjdk 23
kotlin 1-m.kt 120ms 0.3ms 49.4MB 167ms 17ms kotlin/jvm 21
wasm 2.rs 122ms 0.7ms 50.8MB 110ms 7ms node 18.19.0
java 1.java 126ms 5.3ms 87.5MB 157ms 27ms graal/jvm 17.0.8
codon 1.py 140ms 2.4ms 5.8MB 127ms 0ms codon 0.16.3
haxe 3.hx 153ms 1.5ms 28.3MB 147ms 10ms haxe/cpp 4.3.3
csharp 8.cs 162ms 1.0ms 27.0MB 150ms 0ms mono 6.12.0
python 2.py 179ms 0.4ms 55.8MB 153ms 10ms pypy 3.10.13
d 2.d 206ms 3.5ms 4.4MB 193ms 0ms dmd 2.106.1
java 1.java 243ms 2.9ms 46.7MB 163ms 140ms openjdk/zgc 21
haxe 2.hx 247ms 5.2ms 5.7MB 237ms 0ms haxe/hl/jit 1.14.0
haxe 1.hx 252ms 1.0ms 5.7MB 240ms 0ms haxe/hl/jit 1.14.0
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
python 1.py 305ms 5.4ms 54.0MB 283ms 10ms pypy 3.10.13
ruby 2-m.rb 319ms 5.4ms 312.4MB 540ms 113ms truffleruby 23.1.2
odin 1.odin 442ms 0.7ms 1.6MB 430ms 0ms odin 2024
haxe 3.hx 677ms 19ms 5.2MB 523ms 200ms haxe/hl/c 4.3.3
java 2.java 681ms 8.7ms 528.1MB 440ms 427ms openjdk/zgc 21
haxe 2.hx 688ms 25ms 5.0MB 680ms 0ms haxe/cpp 4.3.3
haxe 3.hx 774ms 2.3ms 5.8MB 640ms 187ms haxe/hl/jit 1.14.0
haxe 1.hx 807ms 2.8ms 5.0MB 797ms 0ms haxe/cpp 4.3.3
python 1.py 942ms 43ms 8.3MB 930ms 0ms pyston 3.8.12
lua 4.lua 1138ms 22ms 2.3MB 1127ms 0ms lua 5.4.6
python 2.py 1314ms 31ms 8.1MB 1300ms 0ms pyston 3.8.12
ruby 2.rb 1455ms 8.4ms 28.4MB 1423ms 17ms ruby/yjit 3.3.0
perl 2.pl 2562ms 54ms 6.3MB 2553ms 0ms perl 5.38.2
ruby 2.rb 2876ms 37ms 28.1MB 2840ms 20ms ruby 3.3.0
python 1.py 2986ms 131ms 9.1MB 2973ms 0ms cpython 3.12.1
python 2.py 3077ms 2.2ms 9.1MB 3063ms 0ms cpython 3.12.1