Top 10: JavaScript, Python, Java, TypeScript, C#, Php, C ++, C, Shell, Ruby Reference
Otros: Go, Rust, Swift, Crystal, Pony, Ada, Pascal, Fortran, Kotlin, Clojure, Scala, Mono, R, Dart, Julia, D, Nim, Cython, Python3, Pypy, Ruby Jit, Ocaml, Lisp, Haskell, Erl, Elixir, Escript, Dart, Scheme, Lua, Lua, Ocaml, Bash, Bash, Bathang, Elixir, Escript, Dart, Scheme, Lua, Lua, Ocaml, Bash, Bash, Bathang, Elixir, ESCRIP Emoji
El código realiza un Fibonacci recursivo a la posición 47 con el resultado de 2,971,215,073.
Fibonacci se puede escribir de muchas maneras diferentes. El objetivo de este proyecto es comparar cómo cada idioma maneja exactamente el mismo código.
Aquí está la versión de Ruby:
def fib(n)
return n if n <= 1
fib(n - 1) + fib(n - 2)
end
puts fib(47)
Aquí está la versión de Crystal:
def fib(n)
return n if n <= 1
fib(n - 1) + fib(n - 2)
end
puts fib(47_u64)
También mantenga un campo de juego nivelado, solo se utilizan banderas comunes de "lanzamiento" en el paso de compilación. Esto permite optimizaciones de compiladores como la enlinición y la propagación constante, pero elimina cualquier cosa considerada peligrosa, es decir, eludiendo de las verificaciones de los límites.
Todas las pruebas se ejecutan en:
Puede ejecutar las pruebas usando Docker: docker run -it drujensen/fib
Por defecto, compilará y ejecutará todos los idiomas 5 veces. Los totales se calculan agregando los tiempos promedio de compilación y ejecución.
Para ejecutar solo un subconjunto de los idiomas, proporcione una lista de extensiones y opcionalmente el recuento:
docker run -it drujensen/fib ./run.sh s,c,cpp,go,rs,swift 5
Para ejecutarse en segundo plano usando la pantalla:
screen
docker run drujensen/fib > results.txt 2>&1Ctrl+A seguido de D .screen -rEl último punto de referencia se ejecutó el 05 de diciembre de 2024
| Idioma | Total | Compilar | Tiempo | Correr | Tiempo | Extendido |
|---|---|---|---|---|---|---|
| Nim | 0.832 | nim c -d: liberar fib.nim | 0.669 | ./mentira | 0.163 | nim |
| do | 4.835 | GCC -O3 -O fib fib.c | 0.112 | ./mentira | 4.723 | do |
| C ++ | 4.888 | g ++ -o3 -o fib fib.cpp | 0.139 | ./mentira | 4.750 | CPP |
| Fortano | 6.334 | GFORTRAN -O3 -O FIB FIB.F03 | 0.130 | ./mentira | 6.204 | f03 |
| ADA | 6.811 | Gnat make -o3 -gnatp -o fib fib.adb | 0.220 | ./mentira | 6.591 | behip |
| Óxido | 8.108 | Rustc -c opt -nivel = 3 fib.rs | 0.358 | ./mentira | 7.750 | RS |
| Odín | 8.838 | Odin Build Fib.odin -0 -0: velocidad | 0.087 | ./mentira | 8.751 | odín |
| Mojo | 8.947 | mojo construir fib.mojo | 0.241 | ./mentira | 8.706 | mojo |
| V | 9.168 | v -prod -o fib fib.v | 4.450 | ./mentira | 4.718 | V |
| Asamblea | 9.367 | GCC -NO -PIE -O3 -O FIB FIB.S | 0.025 | ./mentira | 9.342 | s |
| Rápido | 9.781 | swiftc -unchecked fib.swift | 0.399 | ./mentira | 9.381 | rápido |
| Pascal | 10.460 | fpc -o3 -si ./fib.pas | 0.041 | ./mentira | 10.419 | pasta |
| Poni | 11.106 | Ponyc -S -B fib -p ./fib.pony | 0.879 | ./mentira | 10.226 | poni |
| Ocaml | 16.018 | ocamlopt -o3 -o fib fib.ml | 0.187 | ./mentira | 15.831 | ml |
| Zigza | 16.181 | zig build -exe -oreleasefast ./fib.zig | 6.882 | ./mentira | 9.299 | zigza |
| Haskell | 18.095 | rm ./fib.o && ghc -o3 -o fib fib.hs | 0.001 | ./mentira | 18.094 | HS |
| D | 18.193 | DMD -lelase -Of = fib fib.d | 0.342 | ./mentira | 17.851 | d |
| Ir | 18.948 | ir a construir fib.go | 1.107 | ./mentira | 17.842 | ir |
| Cristal | 20.525 | Crystal Build -Lelease Fib.CR | 3.106 | ./mentira | 17.420 | CR |
| Ceceo | 25.726 | sbcl --load fib.lisp | 0.979 | ./mentira | 24.747 | ceceo |
| Dart compilado | 31.707 | DART compile exe -o fib ./fib.dart | 1.558 | ./mentira | 30.149 | dartc |
| Cobol | 4380.728 | COBC -X -O3 -O fib ./fib.cbl | 0.133 | ./mentira | 4380.596 | CBL |
| Idioma | Total | Compilar | Tiempo | Correr | Tiempo | Extendido |
|---|---|---|---|---|---|---|
| DO# | 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 | fib java | 12.307 | Java |
| Escala | 15.836 | Scalac fib.scala | 2.682 | fib de escala | 13.153 | escala |
| Kotlín | 16.286 | kotlinc fib.kt | 4.074 | java fibkt | 12.212 | kt |
| Erlang | 28.378 | Erlc +nativo +'{hipe, [o3]}' fib.erl | 0.402 | Erl -Noinput -Noshell -S fib | 27.976 | ERL |
| Groovy | 70.123 | groovyc fib.groovy | 1.519 | fib goovy | 68.604 | groovy |
| Idioma | Tiempo | Correr | Extendido |
|---|---|---|---|
| Clojure | 17.815 | clojure -m fib.cljc | CLJC |
| Julia | 18,000 | julia -o3 fib.jl | jl |
| Bollo | 21.312 | Bun fib.js | bollo |
| Dardo | 29.984 | Dart Fib.Dart | dardo |
| Nodo | 34.736 | nodo fib.js | js |
| Elixir | 35.243 | Erl_compiler_options = '[nativo, {hipe, [o3]}]' elixir fib.exs | exs |
| Lua Jit | 37.837 | luajit fib.lua | lujit |
| Python (Pypy) | 54.078 | pypy fib.py | pypy |
| Ruby (jit) | 81.454 | Ruby --jit fib.rb | rbjit |
| Idioma | Tiempo | Correr | Extendido |
|---|---|---|---|
| Escrito | 28.380 | escript fib.es | cepalle |
| Esquema | 102.887 | fibra de astucia | SCM |
| Php | 157.312 | PHP FIB.PHP | php |
| Lua | 203.702 | lua fib.lua | lua |
| Rubí | 393.625 | ruby fib.rb | RB |
| Pitón | 423.427 | Python fib.py | py |
| Janet | 479.663 | Janet ./fib.Janet | Janet |
| Perl | 1490.416 | perl fib.pl | por favor |
| Raku | 1672.015 | rakudo fib.raku | raku |
| TCL | 2230.883 | tclsh fib.tcl | TCL |
| Riñonal | 2575.249 | R -f fib.r | riñonal |
Todos los compiladores se instalan utilizando APT o ASDF en Ubuntu 24.04 Imagen de Docker:
| Idioma | Versión |
|---|---|
| ADA | 13.2.0 |
| asamblea | 13.2.0 |
| intento | 5.2.21 |
| bollo | 1.1.38 |
| cristal | 1.14.0 |
| clojure | 1.12.0.1488 |
| dardo | 3.5.4 |
| DMD | 2.109.1 |
| punteado | 9.0.101 |
| elixir | 1.17.3 |
| olmo | 0.19.1 |
| Erlang | 27.1.2 |
| fortano | 13.2.0 |
| G ++ | 13.2.0 |
| GCC | 13.2.0 |
| gnucobol | 3.2.0 |
| golang | 1.23.2 |
| groovy | 4.0.24 |
| engaño | 3.0.10 |
| Haskell | 9.8.3 |
| Janet | 1.36.0 |
| Java | OpenJDK-23 |
| Julia | 1.11.1 |
| K | 3.6 |
| kotlín | 2.1.0 |
| LDC | 1.39.0 |
| lua | 5.4.7 |
| lujit | 2.1.1 |
| mojo | 24.5.0 |
| nim | 2.2.0 |
| nodejs | 23.3.0 |
| ocaml | 5.2.1 |
| odín | Dev-2024-11 |
| pascal | 3.2.2 |
| perl | 5.40.0 |
| php | 8.4.1 |
| poni | 0.58.7 |
| núcleo de powershell | 7.4.6 |
| pitón | 3.12.0 |
| pypy | 7.3.17 |
| riñonal | 4.4.2 |
| rakudo | 2024.10 |
| rubí | 3.3.6 |
| óxido | 1.83.0 |
| SBCL | 2.4.11 |
| escala | 3.3.4 |
| rápido | 6.0.2 |
| TCL | 9.0.0 |
| V | 0.4.8 |
| zigza | 0.13.0 |