All nbody problem benchmarks

Current benchmark data was generated on Sun Dec 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
rust 4-i.rs 165ms 3.7ms 1.9MB 153ms 0ms rustc 1.83.0
cpp 0-i.cpp 167ms 0.6ms 1.5MB 157ms 0ms g++ 11.4.0
cpp 0-i.cpp 170ms 0.3ms 2.3MB 160ms 0ms clang++ 14.0.0-1ubuntu1.1
rust 7-i.rs 236ms 0.8ms 1.8MB 227ms 0ms rustc 1.83.0
rust 1.rs 238ms 0.5ms 1.8MB 230ms 0ms rustc 1.83.0
c 8-i.c 245ms 1.0ms 1.5MB 230ms 0ms zigcc 0.13.0
zig 2.zig 273ms 0.3ms 1.1MB 263ms 0ms zig 0.13.0
rust 2.rs 279ms 0.3ms 1.8MB 267ms 0ms rustc 1.83.0
rust 3.rs 280ms 0.4ms 1.9MB 270ms 0ms rustc 1.85.0-nightly
c 5.c 298ms 0.2ms 1.5MB 283ms 0ms zigcc 0.13.0
c 8-i.c 301ms 1.8ms 2.1MB 290ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 308ms 1.0ms 2.3MB 300ms 0ms gcc 14.2.0
v 1.v 310ms 0.2ms 1.6MB 300ms 0ms v/clang 0.4.8
v 1.v 311ms 1.5ms 2.4MB 300ms 0ms v/clang+gc 0.4.8
c 2.c 312ms 1.5ms 1.5MB 300ms 0ms zigcc 0.13.0
c 5.c 312ms 0.9ms 2.3MB 300ms 0ms gcc 14.2.0
cpp 1.cpp 313ms 0.8ms 1.8MB 300ms 0ms g++ 11.4.0
zig 1.zig 313ms 0.6ms 1.3MB 300ms 0ms zig 0.13.0
cpp 1.cpp 314ms 1.2ms 2.4MB 303ms 0ms clang++ 14.0.0-1ubuntu1.1
c 5.c 315ms 2.3ms 2.1MB 307ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 317ms 2.8ms 2.1MB 307ms 0ms clang 14.0.0-1ubuntu1.1
nim 2.nim 319ms 1.8ms 1.8MB 310ms 0ms nim 2.2.0
c 8-i.c 332ms 0.1ms 2.3MB 320ms 0ms gcc 14.2.0
chapel 2.chpl 334ms 4.0ms 32.8MB 317ms 7ms chpl 1.31.0
nim 2.nim 339ms 0.8ms 2.0MB 330ms 0ms nim/clang 2.2.0
wasm 1.rs 343ms 1.8ms 37.1MB 323ms 3ms wasmer/llvm 5.0.2
crystal 2.cr 343ms 1.1ms 3.4MB 330ms 0ms crystal 1.14.0
go 1.go 344ms 0.4ms 0.1MB 337ms 0ms tinygo 0.34.0
crystal 1.cr 344ms 2.1ms 3.4MB 330ms 0ms crystal 1.14.0
swift 7.swift 347ms 7.9ms 10.0MB 333ms 0ms swift 6.0.2
odin 1-i.odin 355ms 0.4ms 1.5MB 343ms 0ms odin 2024
d 2.d 360ms 1.4ms 2.8MB 347ms 0ms ldc2 1.39.0
odin 1.odin 360ms 14ms 1.5MB 350ms 0ms odin 2024
d 1.d 360ms 1.1ms 2.9MB 350ms 0ms ldc2 1.39.0
go 1.go 361ms 1.5ms 3.4MB 347ms 0ms go 1.23.3
csharp 9.cs 362ms 1.8ms 33.9MB 337ms 13ms dotnet 9.0.100
csharp 8.cs 370ms 2.0ms 15.7MB 350ms 0ms dotnet/aot 9.0.100
ocaml 1.ml 374ms 0.9ms 5.2MB 363ms 0ms ocaml 5.2.1
wasm 1.rs 406ms 1.4ms 20.8MB 390ms 0ms wasmtime 27.0.0
kotlin 1n.kt 407ms 3.6ms 4.7MB 400ms 0ms kotlin/native 1.8.21
dart 3.dart 415ms 2.7ms 5.9MB 403ms 0ms dart/exe 3.5.4
csharp 8.cs 436ms 9.8ms 33.7MB 410ms 3ms dotnet 9.0.100
java 1.java 443ms 2.2ms 45.3MB 480ms 13ms openjdk 21
kotlin 1.kt 446ms 1.4ms 49.5MB 480ms 23ms kotlin/jvm 21
java 1.java 448ms 1.5ms 48.5MB 483ms 20ms openjdk 23
java 1.java 450ms 4.6ms 83.3MB 477ms 30ms graal/jvm 17.0.8
javascript 6.js 460ms 5.9ms 59.6MB 447ms 7ms node 23.3.0
typescript 6.ts 463ms 2.6ms 60.5MB 453ms 7ms deno 2.1.2
wasm 2.rs 552ms 37ms 39.3MB 540ms 0ms wasmer/llvm 5.0.2
java 1.java 569ms 1.3ms 46.9MB 493ms 137ms openjdk/zgc 21
wasm 2.rs 576ms 0.6ms 20.8MB 560ms 0ms wasmtime 27.0.0
javascript 6.js 672ms 15ms 44.9MB 667ms 3ms bun 1.1.38
d 1.d 679ms 3.1ms 4.6MB 667ms 0ms dmd 2.109.1
lua 4.lua 716ms 2.9ms 2.4MB 707ms 0ms luajit 2.1.0-beta3
ruby 2.rb 861ms 20ms 329.1MB 1117ms 120ms truffleruby 24.1.1
haxe 2.hx 867ms 20ms 5.1MB 860ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 1053ms 7.5ms 5.0MB 1040ms 0ms haxe/hl/c 4.3.6
java 2.java 1248ms 2.9ms 611.8MB 1370ms 97ms openjdk 21
csharp 8.cs 1249ms 3.5ms 24.2MB 1233ms 0ms mono 6.12.0
java 2.java 1255ms 4.8ms 780.5MB 1383ms 97ms openjdk 23
codon 1.py 1306ms 9.3ms 7.7MB 1293ms 0ms codon 0.17.0
python 2.py 1352ms 14ms 59.8MB 1320ms 17ms pypy 3.10.14
haxe 3.hx 1390ms 21ms 25.6MB 1597ms 40ms haxe/cpp 4.3.6
d 2.d 2034ms 49ms 4.6MB 2023ms 0ms dmd 2.109.1
haxe 2.hx 2402ms 3.1ms 5.7MB 2387ms 0ms haxe/hl/jit 1.14.0
haxe 1.hx 2451ms 7.8ms 5.7MB 2433ms 0ms haxe/hl/jit 1.14.0
python 1.py 2641ms 30ms 56.6MB 2610ms 13ms pypy 3.10.14
java 2.java 3283ms 56ms 2413.4MB 1647ms 1847ms openjdk/zgc 21
haxe 1.hx timeout 0.0ms 4.4MB 4990ms 0ms haxe/cpp 4.3.6
haxe 2.hx timeout 0.0ms 4.4MB 4990ms 0ms haxe/cpp 4.3.6
haxe 3.hx timeout 0.0ms 5.2MB 3863ms 1640ms haxe/hl/c 4.3.6
haxe 3.hx timeout 0.0ms 5.9MB 4157ms 1303ms 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 4983ms 0ms perl 5.40.0
python 1.py timeout 0.0ms 8.8MB 4987ms 0ms cpython 3.13.0
python 2.py timeout 0.0ms 8.8MB 4983ms 0ms cpython 3.13.0
python 1.py timeout 0.0ms 8.3MB 4990ms 0ms pyston 3.8.12
python 2.py timeout 0.0ms 8.1MB 4990ms 0ms pyston 3.8.12
ruby 2.rb timeout 0.0ms 28.0MB 4967ms 17ms ruby 3.3.6
ruby 2.rb timeout 0.0ms 28.3MB 4963ms 17ms ruby/yjit 3.3.6

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
rust 4-i.rs 19ms 0.4ms 1.8MB 10ms 0ms rustc 1.83.0
cpp 0-i.cpp 20ms 0.2ms 2.3MB 10ms 0ms clang++ 14.0.0-1ubuntu1.1
rust 1.rs 26ms 0.1ms 1.8MB 17ms 0ms rustc 1.83.0
rust 7-i.rs 26ms 0.2ms 1.8MB 13ms 0ms rustc 1.83.0
c 8-i.c 27ms 0.1ms 1.5MB 20ms 0ms zigcc 0.13.0
zig 2.zig 29ms 0.1ms 1.3MB 20ms 0ms zig 0.13.0
rust 2.rs 30ms 0.1ms 1.8MB 20ms 0ms rustc 1.83.0
rust 3.rs 30ms 0.2ms 1.9MB 20ms 0ms rustc 1.85.0-nightly
c 5.c 32ms 0.2ms 1.5MB 20ms 0ms zigcc 0.13.0
c 8-i.c 32ms 0.3ms 2.1MB 20ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 33ms 0.1ms 2.3MB 23ms 0ms gcc 14.2.0
cpp 1.cpp 33ms 0.2ms 1.8MB 20ms 0ms g++ 11.4.0
zig 1.zig 33ms 0.2ms 1.3MB 23ms 0ms zig 0.13.0
c 5.c 34ms 0.6ms 2.3MB 20ms 0ms gcc 14.2.0
v 1.v 34ms 0.5ms 1.8MB 27ms 0ms v/clang 0.4.8
c 2.c 34ms 0.6ms 1.5MB 23ms 0ms zigcc 0.13.0
v 1.v 34ms 0.4ms 2.4MB 23ms 0ms v/clang+gc 0.4.8
c 5.c 34ms 0.9ms 2.1MB 23ms 0ms clang 14.0.0-1ubuntu1.1
nim 2.nim 34ms 0.6ms 1.8MB 23ms 0ms nim 2.2.0
cpp 1.cpp 34ms 0.2ms 2.3MB 27ms 0ms clang++ 14.0.0-1ubuntu1.1
c 8-i.c 36ms 0.4ms 2.3MB 30ms 0ms gcc 14.2.0
nim 2.nim 36ms 0.2ms 2.0MB 27ms 0ms nim/clang 2.2.0
c 2.c 37ms 5.1ms 2.1MB 27ms 0ms clang 14.0.0-1ubuntu1.1
odin 1-i.odin 37ms 0.1ms 1.5MB 27ms 0ms odin 2024
go 1.go 38ms 0.6ms 0.1MB 30ms 0ms tinygo 0.34.0
crystal 1.cr 38ms 0.8ms 3.4MB 30ms 0ms crystal 1.14.0
crystal 2.cr 38ms 1.0ms 3.4MB 27ms 0ms crystal 1.14.0
odin 1.odin 38ms 0.8ms 1.5MB 27ms 0ms odin 2024
d 1.d 39ms 0.2ms 2.9MB 30ms 0ms ldc2 1.39.0
d 2.d 39ms 0.1ms 2.8MB 30ms 0ms ldc2 1.39.0
go 1.go 40ms 1.0ms 3.4MB 30ms 0ms go 1.23.3
swift 7.swift 41ms 0.1ms 10.1MB 30ms 0ms swift 6.0.2
ocaml 1.ml 42ms 1.3ms 5.2MB 30ms 0ms ocaml 5.2.1
kotlin 1n.kt 46ms 0.7ms 4.7MB 40ms 0ms kotlin/native 1.8.21
dart 3.dart 46ms 0.4ms 5.9MB 37ms 0ms dart/exe 3.5.4
wasm 1.rs 47ms 0.8ms 38.4MB 30ms 3ms wasmer/llvm 5.0.2
csharp 8.cs 48ms 0.3ms 15.7MB 33ms 0ms dotnet/aot 9.0.100
wasm 1.rs 49ms 0.5ms 20.8MB 33ms 3ms wasmtime 27.0.0
chapel 2.chpl 52ms 0.2ms 32.8MB 40ms 0ms chpl 1.31.0
wasm 2.rs 66ms 0.8ms 20.8MB 50ms 3ms wasmtime 27.0.0
wasm 2.rs 67ms 3.4ms 37.4MB 50ms 7ms wasmer/llvm 5.0.2
d 1.d 71ms 0.3ms 4.6MB 60ms 0ms dmd 2.109.1
lua 4.lua 75ms 2.5ms 2.3MB 67ms 0ms luajit 2.1.0-beta3
javascript 6.js 77ms 1.7ms 59.5MB 67ms 3ms node 23.3.0
typescript 6.ts 80ms 0.9ms 58.6MB 63ms 10ms deno 2.1.2
javascript 6.js 87ms 1.8ms 44.9MB 80ms 10ms bun 1.1.38
haxe 2.hx 89ms 2.0ms 5.0MB 80ms 0ms haxe/hl/c 4.3.6
csharp 8.cs 96ms 0.6ms 31.9MB 70ms 10ms dotnet 9.0.100
csharp 9.cs 97ms 7.6ms 34.1MB 67ms 13ms dotnet 9.0.100
haxe 1.hx 110ms 3.1ms 5.0MB 100ms 0ms haxe/hl/c 4.3.6
java 1.java 120ms 2.1ms 87.3MB 137ms 37ms graal/jvm 17.0.8
java 1.java 121ms 1.0ms 45.4MB 163ms 17ms openjdk 21
java 1.java 123ms 1.3ms 48.3MB 157ms 13ms openjdk 23
kotlin 1.kt 123ms 1.1ms 49.4MB 163ms 20ms kotlin/jvm 21
codon 1.py 136ms 1.5ms 7.7MB 120ms 0ms codon 0.17.0
haxe 3.hx 158ms 1.7ms 25.6MB 163ms 7ms haxe/cpp 4.3.6
csharp 8.cs 166ms 2.5ms 24.2MB 150ms 0ms mono 6.12.0
python 2.py 180ms 2.7ms 57.6MB 153ms 10ms pypy 3.10.14
d 2.d 208ms 1.2ms 4.6MB 200ms 0ms dmd 2.109.1
java 1.java 245ms 0.4ms 44.9MB 160ms 140ms openjdk/zgc 21
haxe 2.hx 250ms 2.1ms 5.7MB 240ms 0ms haxe/hl/jit 1.14.0
haxe 1.hx 250ms 1.7ms 5.7MB 237ms 0ms haxe/hl/jit 1.14.0
python 1.py 304ms 5.3ms 56.8MB 277ms 10ms pypy 3.10.14
java 2-m.java 307ms 2.9ms 343.0MB 450ms 57ms openjdk 21
java 2-m.java 313ms 5.4ms 387.7MB 447ms 67ms openjdk 23
ruby 2-m.rb 323ms 3.4ms 328.9MB 570ms 107ms truffleruby 24.1.1
haxe 3.hx 665ms 0.8ms 5.1MB 527ms 193ms haxe/hl/c 4.3.6
haxe 2.hx 671ms 3.3ms 4.4MB 657ms 0ms haxe/cpp 4.3.6
java 2.java 704ms 8.8ms 536.4MB 473ms 420ms openjdk/zgc 21
haxe 3.hx 773ms 2.5ms 5.8MB 633ms 197ms haxe/hl/jit 1.14.0
haxe 1.hx 807ms 5.6ms 4.4MB 797ms 0ms haxe/cpp 4.3.6
python 1.py 1078ms 255ms 8.3MB 1063ms 0ms pyston 3.8.12
lua 4.lua 1124ms 21ms 2.3MB 1113ms 0ms lua 5.4.7
python 2.py 1319ms 15ms 8.1MB 1303ms 0ms pyston 3.8.12
ruby 2.rb 1450ms 8.5ms 28.3MB 1413ms 23ms ruby/yjit 3.3.6
perl 2.pl 2764ms 20ms 6.1MB 2753ms 0ms perl 5.40.0
ruby 2.rb 2881ms 59ms 28.1MB 2850ms 20ms ruby 3.3.6
python 1.py 2912ms 17ms 8.8MB 2900ms 0ms cpython 3.13.0
python 2.py 3132ms 41ms 8.8MB 3123ms 0ms cpython 3.13.0