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