github.com/msoap/factorial-multi-language

Calc factorial in any languages


Keywords
awk, benchmark, coffeescript, dart, erlang, golang, haskell, java, javascript, kotlin, languages, lua, ocaml, pascal, perl, php, python, ruby, rust, swift
Install
go get github.com/msoap/factorial-multi-language

Documentation

Comparison of languages for speed by calculation of factorial in different languages

Hardware:

Apple M1 Pro / 3.2 GHz / 8 Cores

Report:

versions:

  • C: Apple clang version 15.0.0 (clang-1500.0.40.1)
  • Dart: 3.1.2
  • Erlang: 14.0.2
  • Go: 1.21.1
  • Haskell: 9.4.4
  • Java: 18.0.2.1
  • JavascriptCore: 16.6
  • OCaml: 4.14.0
  • Pascal: 3.2.2
  • PyPy: 7.3.12
  • Rust: 1.72.1
  • Swift: 5.9
  • awk: 20200816
  • gawk: 5.2.2
  • lua: 5.4.6
  • luajit: 2.1.0-beta3
  • nim: 2.0.0
  • node.js: 20.7.0
  • perl: 5.30.3
  • perl6: v2023.09.
  • php: 8.2.10
  • python3: 3.11.5
  • ruby: 2.6.10

raw data:

C: 2.255 sec for 100000000 = 44340876 rps
C gcc -O1: 3.330 sec for 500000000 = 150164968 rps
C gcc -O2: 0.021 sec for 9000000000 = 438979421620 rps
Dart: 6.126 sec for 200000000 = 32648234 rps
Erlang: 1.799 sec for 7000000 = 3891369 rps
Go: 2.501 sec for 150000000 = 59979326 rps
Go-cgo: 2.377 sec for 50000000 = 21033616 rps
Go-mt: 0.450 sec for 150000000 = 333575583 rps
Haskell: 7.522 sec for 10000000 = 1329470 rps
Java: 3.214 sec for 300000000 = 93339911 rps
JavascriptCore: 3.118 sec for 50000000 = 16035226 rps
OCaml: 4.546 sec for 150000000 = 32993025 rps
Pascal: 2.931 sec for 100000000 = 34123098 rps
PyPy: 2.373 sec for 10000000 = 4214516 rps
Rust: 0.651 sec for 20000000 = 30741181 rps
Swift: 3.325 sec for 200000000 = 60143888 rps
awk: 2.393 sec for 1000000 = 417936 rps
gawk: 1.231 sec for 1000000 = 812520 rps
lua: 1.248 sec for 3000000 = 2403450 rps
luajit: 3.356 sec for 50000000 = 14897824 rps
nim: 1.124 sec for 30000000 = 26700763 rps
node.js: 5.528 sec for 50000000 = 9044809 rps
perl: 2.182 sec for 1000000 = 458388 rps
perl6: 1.095 sec for 300000 = 273957 rps
php: 2.737 sec for 7000000 = 2557796 rps
python3: 1.388 sec for 2000000 = 1441051 rps
ruby: 3.953 sec for 5000000 = 1264967 rps

report all:

Chart for all

report fast:

Chart for fast

report other:

Chart for other

See also