Top 10: JavaScript, Python, Java, Typescript, C#, Php, C ++, C, Shell, Ruby Referência
Others: 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, Erlang, Elixir, Escript, Dart, Scheme, Lua, Perl, Perl6, Bash, Emoji
O código executa um Fibonacci recursivo para a 47ª posição com o resultado de 2.971.215.073.
Fibonacci pode ser escrito de várias maneiras diferentes. O objetivo deste projeto é comparar como cada idioma lida exatamente com o mesmo código.
Aqui está a versão Ruby:
def fib(n)
return n if n <= 1
fib(n - 1) + fib(n - 2)
end
puts fib(47)
Aqui está a versão cristalina:
def fib(n)
return n if n <= 1
fib(n - 1) + fib(n - 2)
end
puts fib(47_u64)
Mantenha também um campo de jogo nivelado, apenas os sinalizadores comuns de "liberação" são usados na etapa de compilação. Isso permite otimizações do compilador, como inline e propagação constante, mas remove qualquer coisa considerada considerada perigosa, ignorando as verificações dos limites.
Todos os testes são executados em:
Você pode executar os testes usando o Docker: docker run -it drujensen/fib
Por padrão, ele compilará e executará todos os idiomas 5 vezes. Os totais são calculados adicionando os tempos médios de compilação e execução.
Para executar apenas um subconjunto dos idiomas, forneça uma lista de extensões e, opcionalmente, a contagem:
docker run -it drujensen/fib ./run.sh s,c,cpp,go,rs,swift 5
Para executar em segundo plano usando a tela:
screen
docker run drujensen/fib > results.txt 2>&1Ctrl+A seguido de D .screen -rA última referência foi realizada em 05 de dezembro de 2024
| Linguagem | Total | Compilar | Tempo | Correr | Tempo | Ext |
|---|---|---|---|---|---|---|
| Nim | 0,832 | nim c -d: libere fib.nim | 0,669 | ./fib | 0,163 | nim |
| C | 4.835 | gcc -o3 -o fib fib.c | 0,112 | ./fib | 4.723 | c |
| C ++ | 4.888 | g ++ -o3 -o fib fib.cpp | 0,139 | ./fib | 4.750 | cpp |
| Fortran | 6.334 | gfortran -o3 -o fib fib.f03 | 0,130 | ./fib | 6.204 | f03 |
| Ada | 6.811 | Gnat make -o3 -gnatp -o fib fib.adb | 0,220 | ./fib | 6.591 | adb |
| Ferrugem | 8.108 | RustC -C -Nível Opt = 3 fib.rs | 0,358 | ./fib | 7.750 | rs |
| Odin | 8.838 | Odin Build Fib.odin -File -0: Speed | 0,087 | ./fib | 8.751 | Odin |
| Mojo | 8.947 | mojo construir fib.mojo | 0,241 | ./fib | 8.706 | mojo |
| V | 9.168 | V -Prod -o fib fib.v | 4.450 | ./fib | 4.718 | v |
| Conjunto | 9.367 | GCC -NO -PIE -O3 -O FIB FIB.S | 0,025 | ./fib | 9.342 | s |
| Swift | 9.781 | Swiftc -ouncheced fib.swift | 0,399 | ./fib | 9.381 | Swift |
| Pascal | 10.460 | fpc -o3 -si ./fib.pas | 0,041 | ./fib | 10.419 | pas |
| Pônei | 11.106 | ponyc -s -b fib -p ./fib.pony | 0,879 | ./fib | 10.226 | pônei |
| OCAML | 16.018 | ocamlot -o3 -o fib fib.ml | 0,187 | ./fib | 15.831 | ml |
| Zig | 16.181 | Zig Build -exe -Oleeasefast ./fib.zig | 6.882 | ./fib | 9.299 | Zig |
| Haskell | 18.095 | rm ./fib.o && ghc -o3 -o fib fib.hs | 0,001 | ./fib | 18.094 | hs |
| D | 18.193 | dmd -Release -OF = fib fib.d | 0,342 | ./fib | 17.851 | d |
| Ir | 18.948 | vá construir fib.go | 1.107 | ./fib | 17.842 | ir |
| Cristal | 20.525 | Crystal Build -Release Fib.Cr | 3.106 | ./fib | 17.420 | cr |
| Lisp | 25.726 | sbcl --load fib.lisp | 0,979 | ./fib | 24.747 | lisp |
| Dardo compilado | 31.707 | Dart compilar exe -o fib ./fib.dart | 1.558 | ./fib | 30.149 | Dartc |
| COBOL | 4380.728 | cobc -x -o3 -o fib ./fib.cbl | 0,133 | ./fib | 4380.596 | cbl |
| Linguagem | Total | Compilar | Tempo | Correr | Tempo | 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 | 12.307 | 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 +nativo +'{hipe, [o3]}' fib.erl | 0,402 | erl -noinput -noshell -s fib | 27.976 | erl |
| Groovy | 70.123 | groovyc fib.groovy | 1.519 | groovy fib | 68.604 | Groovy |
| Linguagem | Tempo | Correr | Ext |
|---|---|---|---|
| Clojure | 17.815 | Clojure -m fib.cljc | CLJC |
| Julia | 18.000 | Julia -o3 fib.jl | JL |
| BUN | 21.312 | Bun Fib.js | BUN |
| Dardo | 29.984 | Dart Fib.Dart | dardo |
| Nó | 34.736 | nó fib.js | JS |
| Elixir | 35.243 | Erl_compiler_options = '[nativo, {hipe, [o3]}]' elixir fib.exs | exs |
| Lua jit | 37.837 | luajit fib.lua | Luajit |
| Python (Pypy) | 54.078 | Pypy fib.py | Pypy |
| Ruby (JIT) | 81.454 | ruby --jit fib.rb | rbjit |
| Linguagem | Tempo | Correr | Ext |
|---|---|---|---|
| Escript | 28.380 | Escript Fib.es | es |
| Esquema | 102.887 | dolo fib.scm | scm |
| Php | 157.312 | php fib.php | php |
| Lua | 203.702 | lua fib.lua | Lua |
| Rubi | 393.625 | ruby fib.rb | rb. |
| Python | 423.427 | python fib.py | py |
| Janet | 479.663 | Janet ./fib.Janet | Janet |
| Perl | 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 |
Todos os compiladores são instalados usando o APT ou ASDF no Ubuntu 24.04 Docker Image:
| Linguagem | Versão |
|---|---|
| Ada | 13.2.0 |
| conjunto | 13.2.0 |
| Bash | 5.2.21 |
| BUN | 1.1.38 |
| cristal | 1.14.0 |
| Clojure | 1.12.0.1488 |
| dardo | 3.5.4 |
| DMD | 2.109.1 |
| DOTNET | 9.0.101 |
| elixir | 1.17.3 |
| olmo | 0,19.1 |
| Erlang | 27.1.2 |
| fortran | 13.2.0 |
| g ++ | 13.2.0 |
| GCC | 13.2.0 |
| gNUCOBOL | 3.2.0 |
| Golang | 1.23.2 |
| Groovy | 4.0.24 |
| astúcia | 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 |
| perl | 5.40.0 |
| php | 8.4.1 |
| pônei | 0,58.7 |
| PowerShell-core | 7.4.6 |
| Python | 3.12.0 |
| Pypy | 7.3.17 |
| r | 4.4.2 |
| Rakudo | 2024.10 |
| rubi | 3.3.6 |
| ferrugem | 1.83.0 |
| sbcl | 2.4.11 |
| scala | 3.3.4 |
| Swift | 6.0.2 |
| tcl | 9.0.0 |
| v | 0.4.8 |
| Zig | 0,13.0 |