All nbody problem benchmarks

Current benchmark data was generated on Wed Jan 22 2025, 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 166ms 0.1ms 1.5MB 160ms 0ms g++ 11.4.0
rust 4-i.rs 167ms 7.9ms 1.9MB 153ms 0ms rustc 1.84.0
cpp 0-i.cpp 170ms 0.6ms 2.3MB 160ms 0ms clang++ 14.0.0-1ubuntu1.1
rust 7-i.rs 236ms 0.8ms 1.9MB 227ms 0ms rustc 1.84.0
rust 1.rs 239ms 0.8ms 1.8MB 230ms 0ms rustc 1.84.0
c 8-i.c 246ms 1.0ms 1.5MB 233ms 0ms zigcc 0.13.0
zig 2.zig 274ms 0.5ms 1.1MB 270ms 0ms zig 0.13.0
rust 2.rs 279ms 1.1ms 1.8MB 267ms 0ms rustc 1.84.0
rust 3.rs 280ms 0.3ms 1.9MB 267ms 0ms rustc 1.86.0-nightly
c 5.c 298ms 0.7ms 1.5MB 290ms 0ms zigcc 0.13.0
c 8-i.c 301ms 1.9ms 2.1MB 290ms 0ms clang 14.0.0-1ubuntu1.1
v 1.v 309ms 0.2ms 1.6MB 300ms 0ms v/clang 0.4.9
c 2.c 311ms 1.5ms 2.3MB 300ms 0ms gcc 14.2.0
v 1.v 311ms 1.4ms 2.3MB 300ms 0ms v/clang+gc 0.4.9
c 5.c 311ms 0.3ms 2.3MB 300ms 0ms gcc 14.2.0
cpp 1.cpp 313ms 1.7ms 1.8MB 303ms 0ms g++ 11.4.0
zig 1.zig 313ms 0.7ms 1.3MB 300ms 0ms zig 0.13.0
cpp 1.cpp 313ms 1.0ms 2.3MB 300ms 0ms clang++ 14.0.0-1ubuntu1.1
c 5.c 315ms 0.3ms 2.1MB 300ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 315ms 1.0ms 1.5MB 303ms 0ms zigcc 0.13.0
c 2.c 317ms 2.6ms 2.1MB 307ms 0ms clang 14.0.0-1ubuntu1.1
nim 2.nim 319ms 2.1ms 1.8MB 310ms 0ms nim 2.2.0
chapel 2.chpl 329ms 2.4ms 32.8MB 320ms 0ms chpl 1.31.0
c 8-i.c 332ms 0.9ms 2.3MB 320ms 0ms gcc 14.2.0
nim 2.nim 341ms 2.4ms 2.0MB 330ms 0ms nim/clang 2.2.0
crystal 1.cr 342ms 2.4ms 3.3MB 330ms 0ms crystal 1.15.0
crystal 2.cr 342ms 1.6ms 3.3MB 330ms 0ms crystal 1.15.0
swift 7.swift 344ms 2.5ms 9.8MB 330ms 0ms swift 6.0.3
go 1.go 348ms 1.7ms 0.1MB 337ms 0ms tinygo 0.35.0
odin 1.odin 352ms 0.6ms 1.5MB 340ms 0ms odin 2024
odin 1-i.odin 357ms 1.9ms 1.5MB 350ms 0ms odin 2024
d 1.d 359ms 0.2ms 2.9MB 347ms 0ms ldc2 1.40.0
d 2.d 359ms 1.0ms 2.9MB 350ms 0ms ldc2 1.40.0
csharp 9.cs 360ms 2.4ms 34.2MB 340ms 10ms dotnet 9.0.102
csharp 8.cs 370ms 0.4ms 15.7MB 357ms 0ms dotnet/aot 9.0.102
go 1.go 371ms 12ms 3.4MB 360ms 0ms go 1.23.5
ocaml 1.ml 373ms 4.8ms 5.3MB 363ms 0ms ocaml 5.3.0
kotlin 1n.kt 405ms 5.4ms 4.7MB 393ms 0ms kotlin/native 1.8.21
dart 3.dart 405ms 2.3ms 6.3MB 390ms 0ms dart/exe 3.6.1
wasm 1.rs 407ms 1.8ms 19.2MB 390ms 0ms wasmtime 29.0.1
csharp 8.cs 418ms 0.9ms 33.8MB 393ms 10ms dotnet 9.0.102
java 1.java 441ms 1.3ms 45.2MB 483ms 17ms openjdk 21
kotlin 1.kt 443ms 4.4ms 49.6MB 483ms 17ms kotlin/jvm 21
java 1.java 445ms 3.9ms 48.2MB 477ms 23ms openjdk 23
java 1.java 445ms 1.7ms 87.1MB 467ms 30ms graal/jvm 17.0.8
javascript 6.js 459ms 2.4ms 59.7MB 447ms 7ms node 23.6.0
typescript 6.ts 485ms 28ms 58.6MB 473ms 10ms deno 2.1.7
java 1.java 565ms 2.0ms 44.6MB 497ms 127ms openjdk/zgc 21
wasm 2.rs 579ms 1.4ms 19.2MB 563ms 0ms wasmtime 29.0.1
javascript 6.js 658ms 0.3ms 45.6MB 653ms 7ms bun 1.1.45
d 1.d 679ms 2.8ms 4.6MB 667ms 0ms dmd 2.109.1
lua 4.lua 725ms 27ms 2.3MB 717ms 0ms luajit 2.1.0-beta3
ruby 2.rb 837ms 3.1ms 329.6MB 1080ms 117ms truffleruby 24.1.2
haxe 2.hx 852ms 3.3ms 5.1MB 840ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 1050ms 8.1ms 5.0MB 1033ms 0ms haxe/hl/c 4.3.6
csharp 8.cs 1246ms 5.3ms 22.4MB 1230ms 0ms mono 6.12.0
java 2.java 1252ms 33ms 588.1MB 1390ms 83ms openjdk 21
java 2.java 1255ms 8.3ms 753.6MB 1367ms 107ms openjdk 23
python 2.py 1366ms 23ms 59.8MB 1340ms 10ms pypy 3.10.14
codon 1.py 1371ms 99ms 7.9MB 1357ms 0ms codon 0.17.0
haxe 3.hx 1410ms 33ms 25.6MB 1583ms 50ms haxe/cpp 4.3.6
d 2.d 2012ms 3.9ms 4.6MB 2000ms 0ms dmd 2.109.1
haxe 2.hx 2407ms 6.7ms 5.7MB 2393ms 0ms haxe/hl/jit 1.14.0
haxe 1.hx 2445ms 1.3ms 5.7MB 2430ms 0ms haxe/hl/jit 1.14.0
python 1.py 2633ms 17ms 56.6MB 2607ms 13ms pypy 3.10.14
java 2.java 3285ms 56ms 2475.9MB 1647ms 1840ms openjdk/zgc 21
haxe 1.hx timeout 0.0ms 4.4MB 4987ms 0ms haxe/cpp 4.3.6
haxe 2.hx timeout 0.0ms 4.4MB 4983ms 0ms haxe/cpp 4.3.6
haxe 3.hx timeout 0.0ms 5.2MB 3890ms 1607ms haxe/hl/c 4.3.6
haxe 3.hx timeout 0.0ms 6.0MB 4097ms 1367ms haxe/hl/jit 1.14.0
lua 4.lua timeout 0.0ms 2.3MB 4990ms 0ms lua 5.4.7
perl 2.pl timeout 0.0ms 6.1MB 4987ms 0ms perl 5.40.1
python 1.py timeout 0.0ms 8.6MB 4983ms 3ms cpython 3.13.1
python 2.py timeout 0.0ms 8.8MB 4990ms 0ms cpython 3.13.1
python 1.py timeout 0.0ms 8.3MB 4983ms 3ms pyston 3.8.12
python 2.py timeout 0.0ms 8.1MB 4987ms 0ms pyston 3.8.12
ruby 2.rb timeout 0.0ms 12.9MB 4983ms 3ms ruby 3.4.1
ruby 2.rb timeout 0.0ms 13.6MB 4980ms 3ms ruby/yjit 3.4.1

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 19ms 0.1ms 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
rust 4-i.rs 21ms 3.7ms 1.8MB 10ms 0ms rustc 1.84.0
rust 7-i.rs 26ms 0.4ms 1.8MB 20ms 0ms rustc 1.84.0
rust 1.rs 26ms 0.5ms 1.9MB 17ms 0ms rustc 1.84.0
c 8-i.c 26ms 0.1ms 1.5MB 20ms 0ms zigcc 0.13.0
zig 2.zig 29ms 0.0ms 1.1MB 20ms 0ms zig 0.13.0
rust 2.rs 30ms 0.2ms 1.8MB 20ms 0ms rustc 1.84.0
rust 3.rs 30ms 0.2ms 1.8MB 20ms 0ms rustc 1.86.0-nightly
c 5.c 32ms 0.2ms 1.5MB 20ms 0ms zigcc 0.13.0
c 8-i.c 32ms 0.6ms 2.1MB 23ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 33ms 0.3ms 1.5MB 20ms 0ms zigcc 0.13.0
c 2.c 33ms 0.1ms 2.3MB 23ms 0ms gcc 14.2.0
v 1.v 33ms 0.4ms 1.6MB 27ms 0ms v/clang 0.4.9
c 5.c 33ms 0.1ms 2.1MB 27ms 0ms clang 14.0.0-1ubuntu1.1
zig 1.zig 34ms 0.3ms 1.3MB 27ms 0ms zig 0.13.0
c 5.c 34ms 0.3ms 2.3MB 27ms 0ms gcc 14.2.0
v 1.v 34ms 0.5ms 2.3MB 27ms 0ms v/clang+gc 0.4.9
cpp 1.cpp 34ms 0.6ms 2.3MB 27ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 1.cpp 34ms 0.8ms 1.8MB 23ms 0ms g++ 11.4.0
nim 2.nim 35ms 1.0ms 1.8MB 27ms 0ms nim 2.2.0
c 8-i.c 35ms 0.1ms 2.3MB 27ms 0ms gcc 14.2.0
c 2.c 36ms 3.1ms 2.1MB 27ms 0ms clang 14.0.0-1ubuntu1.1
nim 2.nim 36ms 0.6ms 2.0MB 30ms 0ms nim/clang 2.2.0
go 1.go 37ms 1.4ms 0.1MB 30ms 0ms tinygo 0.35.0
crystal 2.cr 37ms 0.7ms 3.3MB 23ms 0ms crystal 1.15.0
odin 1-i.odin 38ms 0.2ms 1.5MB 30ms 0ms odin 2024
odin 1.odin 38ms 1.1ms 1.5MB 27ms 0ms odin 2024
d 1.d 38ms 0.3ms 2.9MB 27ms 0ms ldc2 1.40.0
crystal 1.cr 38ms 1.4ms 3.3MB 30ms 0ms crystal 1.15.0
d 2.d 39ms 0.6ms 2.9MB 30ms 0ms ldc2 1.40.0
swift 7.swift 39ms 1.1ms 9.8MB 30ms 0ms swift 6.0.3
ocaml 1.ml 40ms 0.1ms 5.3MB 30ms 0ms ocaml 5.3.0
go 1.go 40ms 1.2ms 3.4MB 30ms 0ms go 1.23.5
kotlin 1n.kt 46ms 1.6ms 4.6MB 33ms 0ms kotlin/native 1.8.21
csharp 8.cs 46ms 1.7ms 16.0MB 30ms 0ms dotnet/aot 9.0.102
dart 3.dart 47ms 0.2ms 6.3MB 33ms 0ms dart/exe 3.6.1
wasm 1.rs 49ms 0.4ms 21.2MB 37ms 0ms wasmtime 29.0.1
chapel 2.chpl 52ms 0.4ms 32.8MB 40ms 7ms chpl 1.31.0
wasm 2.rs 66ms 1.1ms 19.2MB 57ms 0ms wasmtime 29.0.1
d 1.d 71ms 1.1ms 4.6MB 60ms 0ms dmd 2.109.1
lua 4.lua 74ms 1.2ms 2.3MB 67ms 0ms luajit 2.1.0-beta3
javascript 6.js 77ms 1.0ms 59.8MB 60ms 10ms node 23.6.0
typescript 6.ts 79ms 0.8ms 58.7MB 60ms 10ms deno 2.1.7
javascript 6.js 85ms 2.1ms 45.4MB 83ms 3ms bun 1.1.45
haxe 2.hx 91ms 1.0ms 5.0MB 80ms 0ms haxe/hl/c 4.3.6
csharp 9.cs 92ms 1.1ms 34.0MB 77ms 0ms dotnet 9.0.102
csharp 8.cs 105ms 9.8ms 34.0MB 73ms 10ms dotnet 9.0.102
haxe 1.hx 111ms 2.6ms 5.0MB 100ms 0ms haxe/hl/c 4.3.6
java 1.java 118ms 1.2ms 45.1MB 153ms 20ms openjdk 21
kotlin 1.kt 120ms 1.7ms 49.7MB 160ms 20ms kotlin/jvm 21
java 1.java 123ms 1.7ms 47.9MB 153ms 20ms openjdk 23
java 1.java 123ms 6.2ms 87.3MB 157ms 27ms graal/jvm 17.0.8
codon 1.py 135ms 1.9ms 7.9MB 123ms 0ms codon 0.17.0
haxe 3.hx 156ms 5.2ms 27.6MB 157ms 7ms haxe/cpp 4.3.6
csharp 8.cs 162ms 2.1ms 26.3MB 147ms 3ms mono 6.12.0
python 2.py 177ms 2.3ms 57.6MB 150ms 13ms pypy 3.10.14
d 2.d 204ms 0.8ms 4.6MB 190ms 0ms dmd 2.109.1
java 1.java 237ms 4.3ms 44.7MB 157ms 137ms openjdk/zgc 21
haxe 2.hx 244ms 0.6ms 5.7MB 230ms 0ms haxe/hl/jit 1.14.0
haxe 1.hx 250ms 1.0ms 5.7MB 240ms 0ms haxe/hl/jit 1.14.0
java 2-m.java 299ms 2.8ms 344.9MB 437ms 53ms openjdk 21
python 1.py 306ms 2.6ms 56.6MB 280ms 10ms pypy 3.10.14
java 2-m.java 311ms 5.4ms 346.3MB 443ms 70ms openjdk 23
ruby 2-m.rb 321ms 1.6ms 325.2MB 553ms 120ms truffleruby 24.1.2
haxe 2.hx 669ms 3.4ms 4.4MB 660ms 0ms haxe/cpp 4.3.6
haxe 3.hx 679ms 29ms 5.2MB 517ms 213ms haxe/hl/c 4.3.6
java 2.java 689ms 16ms 525.9MB 463ms 403ms openjdk/zgc 21
haxe 3.hx 773ms 1.8ms 5.8MB 627ms 207ms haxe/hl/jit 1.14.0
haxe 1.hx 823ms 17ms 4.4MB 813ms 0ms haxe/cpp 4.3.6
python 1.py 921ms 5.6ms 8.3MB 907ms 0ms pyston 3.8.12
ruby 2.rb 1057ms 1.2ms 13.6MB 1037ms 7ms ruby/yjit 3.4.1
lua 4.lua 1103ms 17ms 2.3MB 1090ms 0ms lua 5.4.7
python 2.py 1297ms 37ms 8.3MB 1283ms 0ms pyston 3.8.12
perl 2.pl 2757ms 41ms 6.1MB 2743ms 0ms perl 5.40.1
ruby 2.rb 2773ms 54ms 12.9MB 2760ms 0ms ruby 3.4.1
python 1.py 2982ms 117ms 8.6MB 2973ms 0ms cpython 3.13.1
python 2.py 3119ms 42ms 8.8MB 3103ms 0ms cpython 3.13.1