Top 10: JavaScript, Python, Java, TypeScript, C #, PHP, C ++, C, Shell, Ruby Reference
Autres: Go, Rust, Swift, Crystal, Pony, Ada, Pascal, Fortran, Kotlin, Clojure, Scala, Mono, R, Dart, Julia, D, Nim, Cython, Python3, Pyp
Le code effectue un Fibonacci récursif à la 47e position avec le résultat de 2 971 215 073.
Fibonacci peut être écrit de nombreuses manières différentes. L'objectif de ce projet est de comparer comment chaque langue gère exactement le même code.
Voici la version Ruby:
def fib(n)
return n if n <= 1
fib(n - 1) + fib(n - 2)
end
puts fib(47)
Voici la version Crystal:
def fib(n)
return n if n <= 1
fib(n - 1) + fib(n - 2)
end
puts fib(47_u64)
Gardez trop un terrain de jeu, seuls les drapeaux "Release" courants sont utilisés dans l'étape de compilation. Cela permet des optimisations du compilateur comme l'inclinaison et la propagation constante, mais supprime tout ce qui est considéré comme dangereux IE contournant les contrôles hors limites.
Tous les tests sont exécutés:
Vous pouvez exécuter les tests à l'aide de docker: docker run -it drujensen/fib
Par défaut, il compile et exécutera toutes les langues 5 fois. Les totaux sont calculés en ajoutant les temps de compilation et d'exécution moyens.
Pour exécuter uniquement un sous-ensemble des langues, fournissez une liste d'extensions et éventuellement le nombre:
docker run -it drujensen/fib ./run.sh s,c,cpp,go,rs,swift 5
Pour fonctionner en arrière-plan à l'aide de l'écran:
screen
docker run drujensen/fib > results.txt 2>&1Ctrl+A suivi de D .screen -rLa dernière référence a été dirigée le 05 décembre 2024
| Langue | Total | Compiler | Temps | Courir | Temps | Ext |
|---|---|---|---|---|---|---|
| Nim | 0,832 | nim c -d: libérer fib.nim | 0,669 | ./mensonge | 0,163 | nim |
| C | 4.835 | gcc -o3 -o fib fib.c | 0,112 | ./mensonge | 4.723 | c |
| C ++ | 4.888 | g ++ -o3 -o fib fib.cpp | 0,139 | ./mensonge | 4.750 | cpp |
| Frontran | 6.334 | gfertran -o3 -o fib fib.f03 | 0.130 | ./mensonge | 6.204 | F03 |
| Ada | 6.811 | gnat make -o3 -Gnatp -o fib fib.adb | 0,220 | ./mensonge | 6.591 | BAD |
| Rouiller | 8.108 | RUSTC -C OPT-LEVEL = 3 FIB.RS | 0,358 | ./mensonge | 7.750 | Rs |
| Odin | 8.838 | odin build fib.odin -file -0: vitesse | 0,087 | ./mensonge | 8.751 | Odin |
| Mojo | 8.947 | mojo build fib.mojo | 0,241 | ./mensonge | 8.706 | mojo |
| V | 9.168 | V -prod -o fib fib.v | 4.450 | ./mensonge | 4.718 | V |
| Assemblée | 9.367 | gcc -no-pi -o3 -o fib fib.s | 0,025 | ./mensonge | 9.342 | s |
| Rapide | 9.781 | swiftc -ouched fib.swift | 0,399 | ./mensonge | 9.381 | rapide |
| Pascal | 10.460 | fpc -o3 -si ./fib.pas | 0,041 | ./mensonge | 10.419 | pas |
| Poney | 11.106 | ponyc -s -b fib -p ./fib.pony | 0,879 | ./mensonge | 10.226 | poney |
| Ocaml | 16.018 | Ocamlopt -o3 -o fib fib.ml | 0,187 | ./mensonge | 15.831 | ml |
| Zigou | 16.181 | Zig Build-EXE -oreleaseFast ./fib.zig | 6.882 | ./mensonge | 9.299 | zigou |
| Haskell | 18.095 | rm ./fib.o && ghc -o3 -o fib fib.hs | 0,001 | ./mensonge | 18.094 | HS |
| D | 18.193 | dmd -release -of = fib fib.d | 0,342 | ./mensonge | 17.851 | d |
| Aller | 18.948 | aller construire fib.go | 1.107 | ./mensonge | 17.842 | aller |
| Cristal | 20.525 | Crystal Build - Release Fib.cr | 3.106 | ./mensonge | 17.420 | croisement |
| Zézayer | 25.726 | sbcl --load fib.lisp | 0,979 | ./mensonge | 24.747 | zézayer |
| Dart compilé | 31.707 | Dart compile exe -o fib ./fib.dart | 1,558 | ./mensonge | 30.149 | dartc |
| Cobol | 4380.728 | Cobc -x -o3 -o fib ./fib.cbl | 0,133 | ./mensonge | 4380.596 | cbl |
| Langue | Total | Compiler | Temps | Courir | Temps | Ext |
|---|---|---|---|---|---|---|
| C # | 12.760 | Dotnet Build -C Release -o ./bin | 2.015 | dotnet ./bin/fib.dll | 10.744 | CS |
| Java | 13.040 | javac fib.java | 0,733 | Java Fib | 12h307 | Java |
| Scala | 15.836 | scalac fib.scala | 2.682 | scala fib | 13.153 | scala |
| Kotlin | 16.286 | kotlinc fib.kt | 4.074 | java fibkt | 12.212 | kt |
| Erlang | 28.378 | ERLC + natif + '{Hipe, [O3]}' fib.erl | 0,402 | erl -Noinput -NoShell -s fib | 27.976 | erl |
| Grain | 70.123 | Groovyc fib.groovy | 1.519 | groovy fib | 68,604 | grain |
| Langue | Temps | Courir | Ext |
|---|---|---|---|
| Se cacher | 17.815 | Clojure -m fib.cljc | CLJC |
| Julia | 18.000 | Julia -o3 fib.jl | JL |
| Chignon | 21.312 | bun fib.js | chignon |
| Dard | 29.984 | dart fib.dart | dard |
| Nœud | 34.736 | nœud fib.js | js |
| Élixir | 35.243 | Erl_compiler_options = '[natif, {hipe, [o3]}]' Elixir fib.exs | ex |
| Lua Jit | 37.837 | luajit fib.lua | luajit |
| Python (Pypy) | 54.078 | py fib.py | py |
| Ruby (Jit) | 81.454 | ruby --jit fib.rb | rbjit |
| Langue | Temps | Courir | Ext |
|---|---|---|---|
| Escript | 28.380 | Escript Fib.es | es |
| Schème | 102.887 | GUile fib.scm | SCM |
| Php | 157.312 | php fib.php | php |
| Lua | 203.702 | lua fib.lua | Lua |
| Rubis | 393.625 | ruby fib.rb | RB |
| Python | 423.427 | python fib.py | py |
| Janet | 479.663 | Janet ./fib.janet | Janet |
| Perler | 1490.416 | perl fib.pl | PL |
| Raku | 1672.015 | rakudo fib.raku | raku |
| Tcl | 2230.883 | tclsh fib.tcl | tcl |
| R | 2575.249 | R -f fib.r | r |
Tous les compilateurs sont installés à l'aide d'APT ou ASDF sur Ubuntu 24.04 Docker Image:
| Langue | Version |
|---|---|
| Ada | 13.2.0 |
| assemblée | 13.2.0 |
| frapper | 5.2.21 |
| chignon | 1.1.38 |
| cristal | 1.14.0 |
| se cacher | 1.12.0.1488 |
| dard | 3.5.4 |
| DMD | 2.109.1 |
| dotnet | 9.0.101 |
| élixir | 1.17.3 |
| orme | 0.19.1 |
| erlang | 27.1.2 |
| frontran | 13.2.0 |
| G ++ | 13.2.0 |
| GCC | 13.2.0 |
| gnucobol | 3.2.0 |
| golang | 1.23.2 |
| grain | 4.0.24 |
| ruse | 3.0.10 |
| haskell | 9.8.3 |
| Janet | 1.36.0 |
| Java | OpenJDK-23 |
| Julia | 1.11.1 |
| K | 3.6 |
| kotlin | 2.1.0 |
| LDC | 1.39.0 |
| Lua | 5.4.7 |
| luajit | 2.1.1 |
| mojo | 24.5.0 |
| nim | 2.2.0 |
| nodejs | 23.3.0 |
| ocaml | 5.2.1 |
| Odin | DEV-2024-11 |
| pascal | 3.2.2 |
| perler | 5.40.0 |
| php | 8.4.1 |
| poney | 0,58,7 |
| powershell-core | 7.4.6 |
| python | 3.12.0 |
| py | 7.3.17 |
| r | 4.4.2 |
| rakudo | 2024.10 |
| rubis | 3.3.6 |
| rouiller | 1.83.0 |
| SBCL | 2.4.11 |
| scala | 3.3.4 |
| rapide | 6.0.2 |
| tcl | 9.0.0 |
| V | 0.4.8 |
| zigou | 0.13.0 |