トップ10:JavaScript、Python、Java、TypeScript、C#、PHP、C ++、C、シェル、Rubyリファレンス
その他:ゴー、ラスト、スウィフト、クリスタル、ポニー、エイダ、パスカル、フォルトラン、コトリン、クロジュール、スカラ、モノ、R、ダート、ジュリア、D、ニム、シトン、Python3、パイピ、ルビーJIT、ocaml、lisp、haskell、erlan絵文字
コードは、2,971,215,073の結果で、47番目の位置に再帰的なフィボナッチを実行します。
フィボナッチは、さまざまな方法で書くことができます。このプロジェクトの目標は、各言語がまったく同じコードを処理する方法を比較することです。
これがRubyバージョンです:
def fib(n)
return n if n <= 1
fib(n - 1) + fib(n - 2)
end
puts fib(47)
これがクリスタルバージョンです:
def fib(n)
return n if n <= 1
fib(n - 1) + fib(n - 2)
end
puts fib(47_u64)
あまりにも平等な競技場を維持し、コンパイルステップでは一般的な「リリース」フラグのみが使用されます。これにより、インライン化や一定の提案などのコンパイラの最適化が可能になりますが、危険と見なされるものはすべて、境界チェックをバイパスするものを削除します。
すべてのテストが実行されます:
Docker: docker run -it drujensen/fibを使用してテストを実行できます
デフォルトでは、すべての言語をコンパイルして5回実行します。合計は、平均コンパイルと実行時間を追加することで計算されます。
言語のサブセットのみを実行するには、拡張機能とオプションのカウントのリストを提供します。
docker run -it drujensen/fib ./run.sh s,c,cpp,go,rs,swift 5
画面を使用してバックグラウンドで実行するには:
screen
docker run drujensen/fib > results.txt 2>&1Ctrl+Aを押してDを押してセッションから取り外します。screen -r最後のベンチマークは2024年12月5日に実行されました
| 言語 | 合計 | コンパイル | 時間 | 走る | 時間 | 内線 |
|---|---|---|---|---|---|---|
| nim | 0.832 | nim c -d: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 |
| エイダ | 6.811 | gnat make -o3 -gnatp -o fib fib.adb | 0.220 | ./fib | 6.591 | ADB |
| さび | 8.108 | rustc -c opt -level = 3 fib.rs | 0.358 | ./fib | 7.750 | Rs |
| オーディン | 8.838 | Odin Build fib.odin -file -0:速度 | 0.087 | ./fib | 8.751 | オーディン |
| モジョ | 8.947 | Mojo Build fib.mojo | 0.241 | ./fib | 8.706 | モジョ |
| v | 9.168 | V -Prod -o fib fib.v | 4.450 | ./fib | 4.718 | v |
| 組み立て | 9.367 | gcc -no -pie -o3 -o fib fib.s | 0.025 | ./fib | 9.342 | s |
| 迅速 | 9.781 | swiftc -Ounchecked fib.swift | 0.399 | ./fib | 9.381 | 迅速 |
| パスカル | 10.460 | FPC -O3 -SI ./FIB.PAS | 0.041 | ./fib | 10.419 | パス |
| ポニー | 11.106 | ponyc -s -b fib -p ./fib.pony | 0.879 | ./fib | 10.226 | ポニー |
| ocaml | 16.018 | ocamlopt -o3 -o fib fib.ml | 0.187 | ./fib | 15.831 | ml |
| ジグ | 16.181 | zig build -exe -oreleasefast ./fib.zig | 6.882 | ./fib | 9.299 | ジグ |
| ハスケル | 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 |
| 行く | 18.948 | fib.goをビルドします | 1.107 | ./fib | 17.842 | 行く |
| 結晶 | 20.525 | クリスタルビルド - リリースfib.cr | 3.106 | ./fib | 17.420 | cr |
| lisp | 25.726 | sbcl -load fib.lisp | 0.979 | ./fib | 24.747 | lisp |
| DARTコンパイル | 31.707 | DARTコンパイル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 |
| 言語 | 合計 | コンパイル | 時間 | 走る | 時間 | 内線 |
|---|---|---|---|---|---|---|
| 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 |
| スカラ | 15.836 | Scalac fib.scala | 2.682 | Scala fib | 13.153 | スカラ |
| コトリン | 16.286 | Kotlinc fib.kt | 4.074 | Java Fibkt | 12.212 | KT |
| エルラン | 28.378 | erlc +native +'{hipe、[o3]}' fib.erl | 0.402 | erl -noinput -noshell -s fib | 27.976 | ERL |
| グルーヴィー | 70.123 | Groovyc fib.groovy | 1.519 | グルーヴィーフィブ | 68.604 | グルーヴィー |
| 言語 | 時間 | 走る | 内線 |
|---|---|---|---|
| Clojure | 17.815 | Clojure -M fib.cljc | CLJC |
| ジュリア | 18.000 | ジュリア-O3 fib.jl | jl |
| パン | 21.312 | bun fib.js | パン |
| ダート | 29.984 | Dart fib.dart | ダート |
| ノード | 34.736 | ノードfib.js | JS |
| エリクサー | 35.243 | erl_compiler_options = '[native、{hipe、[o3]}]' elixir fib.exs | exs |
| lua jit | 37.837 | luajit fib.lua | ルアジット |
| python(pypy) | 54.078 | Pypy fib.py | パイキー |
| ルビー(jit) | 81.454 | Ruby -jit fib.rb | rbjit |
| 言語 | 時間 | 走る | 内線 |
|---|---|---|---|
| escript | 28.380 | escript fib.es | es |
| スキーム | 102.887 | guile fib.scm | SCM |
| Php | 157.312 | php fib.php | Php |
| ルア | 203.702 | lua fib.lua | ルア |
| ルビー | 393.625 | Ruby fib.rb | RB |
| Python | 423.427 | Python fib.py | py |
| ジャネット | 479.663 | ジャネット。/fib.janet | ジャネット |
| Perl | 1490.416 | perl fib.pl | pl |
| ラク | 1672.015 | rakudo fib.raku | ラク |
| TCL | 2230.883 | tclsh fib.tcl | TCL |
| r | 2575.249 | r -f fib.R | r |
すべてのコンパイラは、Ubuntu 24.04 Docker画像でAPTまたはASDFを使用してインストールされます。
| 言語 | バージョン |
|---|---|
| エイダ | 13.2.0 |
| 組み立て | 13.2.0 |
| バッシュ | 5.2.21 |
| パン | 1.1.38 |
| 結晶 | 1.14.0 |
| Clojure | 1.12.0.1488 |
| ダート | 3.5.4 |
| DMD | 2.109.1 |
| dotnet | 9.0.101 |
| エリクサー | 1.17.3 |
| エルム | 0.19.1 |
| エルラン | 27.1.2 |
| Fortran | 13.2.0 |
| G ++ | 13.2.0 |
| GCC | 13.2.0 |
| Gnucobol | 3.2.0 |
| ゴラン | 1.23.2 |
| グルーヴィー | 4.0.24 |
| ガイル | 3.0.10 |
| ハスケル | 9.8.3 |
| ジャネット | 1.36.0 |
| Java | OpenJDK-23 |
| ジュリア | 1.11.1 |
| k | 3.6 |
| コトリン | 2.1.0 |
| LDC | 1.39.0 |
| ルア | 5.4.7 |
| ルアジット | 2.1.1 |
| モジョ | 24.5.0 |
| nim | 2.2.0 |
| nodejs | 23.3.0 |
| ocaml | 5.2.1 |
| オーディン | DEV-2024-11 |
| パスカル | 3.2.2 |
| Perl | 5.40.0 |
| Php | 8.4.1 |
| ポニー | 0.58.7 |
| PowerShell-Core | 7.4.6 |
| Python | 3.12.0 |
| パイキー | 7.3.17 |
| r | 4.4.2 |
| rakudo | 2024.10 |
| ルビー | 3.3.6 |
| さび | 1.83.0 |
| SBCL | 2.4.11 |
| スカラ | 3.3.4 |
| 迅速 | 6.0.2 |
| TCL | 9.0.0 |
| v | 0.4.8 |
| ジグ | 0.13.0 |