Top 10: Javascript, Python, Java, TypeScript, C#, PHP, C ++, C, Shell, Referensi Ruby
Lainnya: Pergi, Rust, Swift, Crystal, Pony, Ada, Pascal, Fortran, Kotlin, Clojure, Scala, Mono, R, Dart, Julia, D, Nim, Cython, Python3, Pypy, Ruby JIT, Ocaml, Lisp, Haskell, Erlo, Elixir, Escript, Escript, Ocaml, Lisp, Haskell, Erlo, Erlah, Elixir, Escript, Escript, Ocaml, Lisp, Haskell, Erlang, Erlah, Elixir, escript, Escript, Emoji
Kode ini melakukan fibonacci rekursif ke posisi ke -47 dengan hasil 2.971.215.073.
Fibonacci dapat ditulis dengan berbagai cara. Tujuan dari proyek ini adalah untuk membandingkan bagaimana setiap bahasa menangani kode yang sama persis.
Ini versi Ruby:
def fib(n)
return n if n <= 1
fib(n - 1) + fib(n - 2)
end
puts fib(47)
Ini versi kristal:
def fib(n)
return n if n <= 1
fib(n - 1) + fib(n - 2)
end
puts fib(47_u64)
Terlalu menjaga lapangan bermain level, hanya bendera "rilis" umum yang digunakan dalam langkah kompilasi. Hal ini memungkinkan untuk optimasi kompiler seperti inlining dan propogasi konstan tetapi menghilangkan apa pun yang dianggap berbahaya yaitu melewati pemeriksaan batas.
Semua tes dijalankan pada:
Anda dapat menjalankan tes menggunakan Docker: docker run -it drujensen/fib
Secara default, itu akan menyusun dan menjalankan semua bahasa 5 kali. Total dihitung dengan menambahkan rata -rata kompilasi dan waktu berjalan.
Untuk hanya menjalankan subset bahasa, berikan daftar ekstensi dan secara opsional jumlah:
docker run -it drujensen/fib ./run.sh s,c,cpp,go,rs,swift 5
Untuk berjalan di latar belakang menggunakan layar:
screen
docker run drujensen/fib > results.txt 2>&1Ctrl+A diikuti oleh D .screen -rBenchmark terakhir dijalankan pada 05 Desember 2024
| Bahasa | Total | Menyusun | Waktu | Berlari | Waktu | Ext |
|---|---|---|---|---|---|---|
| Nim | 0.832 | nim c -d: rilis fib.nim | 0.669 | ./bikinan | 0.163 | nim |
| C | 4.835 | GCC -O3 -O FIB FIB.C | 0.112 | ./bikinan | 4.723 | C |
| C ++ | 4.888 | g ++ -o3 -o fib fib.cpp | 0.139 | ./bikinan | 4.750 | CPP |
| Fortran | 6.334 | gfortran -o3 -o fib fib.f03 | 0.130 | ./bikinan | 6.204 | f03 |
| Ada | 6.811 | Gnat Make -O3 -Gnatp -o Fib Fib.adb | 0.220 | ./bikinan | 6.591 | ADB |
| Karat | 8.108 | rustc -c opt -level = 3 fib.rs | 0.358 | ./bikinan | 7.750 | Rs |
| Odin | 8.838 | Odin membangun fib.odin -file -0: kecepatan | 0,087 | ./bikinan | 8.751 | Odin |
| Mojo | 8.947 | mojo membangun fib.mojo | 0.241 | ./bikinan | 8.706 | mojo |
| V | 9.168 | v -prod -o fib fib.v | 4.450 | ./bikinan | 4.718 | v |
| Perakitan | 9.367 | gcc -no -pie -o3 -o fib fib.s | 0,025 | ./bikinan | 9.342 | S |
| Cepat | 9.781 | swiftc -uchecked fib.swift | 0.399 | ./bikinan | 9.381 | cepat |
| Pascal | 10.460 | fpc -o3 -si ./fib.pas | 0,041 | ./bikinan | 10.419 | pas |
| Kuda poni | 11.106 | Ponyc -s -B fib -p ./fib.pony | 0.879 | ./bikinan | 10.226 | kuda poni |
| Ocaml | 16.018 | ocamlopt -o3 -o fib fib.ml | 0.187 | ./bikinan | 15.831 | ml |
| Zig | 16.181 | zig build -exe -oreleasefast ./fib.zig | 6.882 | ./bikinan | 9.299 | Zig |
| Haskell | 18.095 | rm ./fib.o && ghc -o3 -o fib.hs | 0,001 | ./bikinan | 18.094 | HS |
| D | 18.193 | dmd -release -of = fib fib.d | 0.342 | ./bikinan | 17.851 | D |
| Pergi | 18.948 | Bangunlah fib.go | 1.107 | ./bikinan | 17.842 | pergi |
| Kristal | 20.525 | Crystal build --elease fib.cr | 3.106 | ./bikinan | 17.420 | Cr |
| Pelat | 25.726 | SBCL - -load fib.lisp | 0.979 | ./bikinan | 24.747 | pelat |
| Dart disusun | 31.707 | dart kompilasi exe -o fib ./fib.dart | 1.558 | ./bikinan | 30.149 | Dartc |
| COBOL | 4380.728 | cobc -x -o3 -o fib ./fib.cbl | 0.133 | ./bikinan | 4380.596 | cbl |
| Bahasa | Total | Menyusun | Waktu | Berlari | Waktu | Ext |
|---|---|---|---|---|---|---|
| C# | 12.760 | rilis dotnet build -c -o ./bin | 2.015 | dotnet ./bin/fib.dll | 10.744 | CS |
| Jawa | 13.040 | Javac Fib.java | 0.733 | Java Fib | 12.307 | Jawa |
| 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 +asli +'{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 |
| Bahasa | Waktu | Berlari | Ext |
|---|---|---|---|
| Clojure | 17.815 | clojure -m fib.cljc | cljc |
| Julia | 18.000 | Julia -O3 FIB.JL | jl |
| Sanggul | 21.312 | Bun Fib.js | sanggul |
| Anak panah | 29.984 | DART FIB.DART | anak panah |
| Node | 34.736 | node fib.js | JS |
| Eliksir | 35.243 | Erl_compiler_options = '[asli, {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 |
| Bahasa | Waktu | Berlari | Ext |
|---|---|---|---|
| Escript | 28.380 | Escript fib.es | es |
| Skema | 102.887 | Guile 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 |
Semua kompiler diinstal menggunakan APT atau ASDF di Ubuntu 24.04 Docker Image:
| Bahasa | Versi |
|---|---|
| Ada | 13.2.0 |
| perakitan | 13.2.0 |
| pesta | 5.2.21 |
| sanggul | 1.1.38 |
| kristal | 1.14.0 |
| Clojure | 1.12.0.1488 |
| anak panah | 3.5.4 |
| DMD | 2.109.1 |
| dotnet | 9.0.101 |
| eliksir | 1.17.3 |
| Elm | 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 |
| tipu muslihat | 3.0.10 |
| Haskell | 9.8.3 |
| Janet | 1.36.0 |
| Jawa | 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 |
| kuda poni | 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 |
| karat | 1.83.0 |
| SBCL | 2.4.11 |
| Scala | 3.3.4 |
| cepat | 6.0.2 |
| tcl | 9.0.0 |
| v | 0.4.8 |
| Zig | 0.13.0 |