TOP 10: JavaScript, Python, Java, TypeScript, C#, Php, C ++, C, Shell, Ruby Referenz
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
Der Code führt einen rekursiven Fibonacci für die 47. Position mit dem Ergebnis von 2.971.215.073 durch.
Fibonacci kann auf viele verschiedene Arten geschrieben werden. Ziel dieses Projekts ist es, zu vergleichen, wie jede Sprache den genauen Code umgeht.
Hier ist die Ruby -Version:
def fib(n)
return n if n <= 1
fib(n - 1) + fib(n - 2)
end
puts fib(47)
Hier ist die Kristallversion:
def fib(n)
return n if n <= 1
fib(n - 1) + fib(n - 2)
end
puts fib(47_u64)
Auch ein ebenes Wettbewerbsfeld, nur gemeinsame "Release" -Flags werden im Kompilierungsschritt verwendet. Dies ermöglicht Compiler -Optimierungen wie Inlining und ständige Propogation, entzieht jedoch alles, was als gefährlich angesehen wird, dh aus Grenzenprüfungen.
Alle Tests werden durchgeführt:
Sie können die Tests mit Docker: docker run -it drujensen/fib ausführen
Standardmäßig werden alle Sprachen 5 Mal kompiliert und ausgeführt. Die Summen werden durch Hinzufügen der durchschnittlichen Kompilier- und Laufzeiten berechnet.
Um nur eine Untergruppe der Sprachen auszuführen, geben Sie eine Liste von Erweiterungen und optional die Anzahl an:
docker run -it drujensen/fib ./run.sh s,c,cpp,go,rs,swift 5
Mit dem Bildschirm im Hintergrund ausführen:
screen
docker run drujensen/fib > results.txt 2>&1Ctrl+A gefolgt von D .screen -rDer letzte Benchmark wurde am 05. Dezember 2024 betrieben
| Sprache | Gesamt | Kompilieren | Zeit | Laufen | Zeit | Ext |
|---|---|---|---|---|---|---|
| Nim | 0,832 | nim c -d: fib.nim freigeben | 0,669 | ./Flunkerei | 0,163 | nim |
| C | 4.835 | gcc -o3 -o fib fib.c | 0,112 | ./Flunkerei | 4.723 | C |
| C ++ | 4.888 | g ++ -o3 -o fib fib.cpp | 0,139 | ./Flunkerei | 4.750 | CPP |
| Forran | 6.334 | gfortran -o3 -o fib fib.f03 | 0,130 | ./Flunkerei | 6.204 | f03 |
| Ada | 6.811 | gnat make -o3 -gnatp -o fib fib.adb | 0,220 | ./Flunkerei | 6.591 | adb |
| Rost | 8.108 | Rustc -c Opt -Level = 3 Fib.rs | 0,358 | ./Flunkerei | 7.750 | Rs |
| Odin | 8.838 | Odin Build fib.odin -file -0: Geschwindigkeit | 0,087 | ./Flunkerei | 8.751 | Odin |
| Mojo | 8.947 | Mojo Build Fib.Mojo | 0,241 | ./Flunkerei | 8.706 | Mojo |
| V | 9.168 | v -Prod -o fib fib.v | 4.450 | ./Flunkerei | 4.718 | v |
| Montage | 9.367 | gcc -no -pie -o3 -o fib fib.s | 0,025 | ./Flunkerei | 9.342 | S |
| Schnell | 9.781 | SWIFTC -OUNChecked Fib.Swift | 0,399 | ./Flunkerei | 9.381 | schnell |
| Pascal | 10.460 | fpc -o3 -si ./fib.pas | 0,041 | ./Flunkerei | 10.419 | Pas |
| Pony | 11.106 | ponyc -s -b fib -p ./fib.pony | 0,879 | ./Flunkerei | 10.226 | Pony |
| Ocaml | 16.018 | ocamlopt -o3 -o fib fib.ml | 0,187 | ./Flunkerei | 15.831 | ml |
| Zick | 16.181 | Zick Build -exe -oreleasefast ./fib.zig | 6.882 | ./Flunkerei | 9.299 | Zick |
| Haskell | 18.095 | rm ./fib.o && ghc -o3 -o fib fib.hs | 0,001 | ./Flunkerei | 18.094 | HS |
| D | 18.193 | DMD -Release -of = fib fib.d | 0,342 | ./Flunkerei | 17.851 | D |
| Gehen | 18.948 | Gehen Sie fib.go bauen | 1.107 | ./Flunkerei | 17.842 | gehen |
| Kristall | 20.525 | Kristallbau -Fib.cr | 3.106 | ./Flunkerei | 17.420 | Cr |
| Lispeln | 25.726 | sbcl -laden fib.lisp | 0,979 | ./Flunkerei | 24.747 | lispeln |
| Dart zusammengestellt | 31.707 | dart kompile exe -o fib ./fib.dart | 1,558 | ./Flunkerei | 30.149 | Dartc |
| COBOL | 4380.728 | cobc -x -o3 -o fib ./fib.cbl | 0,133 | ./Flunkerei | 4380.596 | CBL |
| Sprache | Gesamt | Kompilieren | Zeit | Laufen | Zeit | 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 +Native +'{HIPE, [O3]}' fib.erl | 0,402 | Erl -Noinput -noshell -S Fib | 27.976 | Erl |
| Groovig | 70.123 | Groovyc Fib.Groovy | 1.519 | Groovy Fib | 68.604 | groovig |
| Sprache | Zeit | Laufen | Ext |
|---|---|---|---|
| Clojure | 17.815 | Clojure -m fib.cljc | Cljc |
| Julia | 18.000 | Julia -o3 fib.jl | jl |
| Brötchen | 21.312 | Bun Fib.js | Brötchen |
| Pfeil | 29.984 | Dart Fib.dart | Pfeil |
| Knoten | 34.736 | Knoten fib.js | JS |
| Elixier | 35.243 | ERL_COMPILER_OPTIONS = '[Native, {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 |
| Sprache | Zeit | Laufen | Ext |
|---|---|---|---|
| ESRIPT | 28.380 | eScript fib.es | es |
| Schema | 102.887 | Guile Fib.scm | SCM |
| Php | 157.312 | Php Fib.php | Php |
| Lua | 203.702 | Lua fib.lua | Lua |
| Rubin | 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 |
Alle Compiler werden mit APT oder ASDF auf Ubuntu 24.04 Docker -Bild installiert:
| Sprache | Version |
|---|---|
| Ada | 13.2.0 |
| Montage | 13.2.0 |
| verprügeln | 5.2.21 |
| Brötchen | 1.1.38 |
| Kristall | 1.14.0 |
| Clojure | 1.12.0.1488 |
| Pfeil | 3.5.4 |
| DMD | 2.109.1 |
| Dotnet | 9.0.101 |
| Elixier | 1.17.3 |
| Ulme | 0,19.1 |
| Erlang | 27.1.2 |
| Forran | 13.2.0 |
| G ++ | 13.2.0 |
| GCC | 13.2.0 |
| Gnucobol | 3.2.0 |
| Golang | 1.23.2 |
| groovig | 4.0.24 |
| List | 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 |
| Pony | 0,58,7 |
| Powershell-Core | 7.4.6 |
| Python | 3.12.0 |
| Pypy | 7.3.17 |
| R | 4.4.2 |
| Rakudo | 2024.10 |
| Rubin | 3.3.6 |
| Rost | 1.83.0 |
| SBCL | 2.4.11 |
| Scala | 3.3.4 |
| schnell | 6.0.2 |
| tcl | 9.0.0 |
| v | 0.4.8 |
| Zick | 0,13.0 |