10 อันดับแรก: JavaScript, Python, Java, TypeScript, C#, PHP, C ++, C, Shell, Ruby Reference
คนอื่น ๆ : ไป, สนิม, รวดเร็ว, คริสตัล, ม้า, อาดา, ปาสคาล, ฟอร์ทราน, Kotlin, Clojure, Scala, Mono, R, Dart, Julia, D, Nim, Cython, Python3, Pypy, Ruby Jit, Ocaml
รหัสดำเนินการ Fibonacci แบบเรียกซ้ำไปยังตำแหน่งที่ 47 ด้วยผลลัพธ์ของ 2,971,215,073
Fibonacci สามารถเขียนได้หลายวิธี เป้าหมายของโครงการนี้คือการเปรียบเทียบวิธีที่แต่ละภาษาจัดการรหัสเดียวกันที่แน่นอน
นี่คือเวอร์ชันทับทิม:
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)
รักษาระดับการเล่นในระดับด้วยการใช้ธง "รีลีส" ทั่วไปเท่านั้นที่ใช้ในขั้นตอนการรวบรวม สิ่งนี้ช่วยให้การเพิ่มประสิทธิภาพของคอมไพเลอร์เช่นการ inlining และ propogation คงที่ แต่จะลบสิ่งที่ถือว่าเป็นอันตรายเช่นการผ่านการตรวจสอบขอบเขต
การทดสอบทั้งหมดทำงานบน:
คุณสามารถเรียกใช้การทดสอบโดยใช้ 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 ตามด้วย Dscreen -rเกณฑ์มาตรฐานสุดท้ายวิ่งไปเมื่อวันที่ 05 ธันวาคม 2567
| ภาษา | ทั้งหมด | รวบรวม | เวลา | วิ่ง | เวลา | ต่อ |
|---|---|---|---|---|---|---|
| ไม่มีความสุข | 0.832 | nim c -d: release fib.nim | 0.669 | ./fib | 0.163 | ไม่มีความสุข |
| 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 |
| คนหาอาหาร | 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 | โมโจสร้าง 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 | มล. |
| ซิก | 16.181 | Zig Build -exe -oreleasefast ./fib.zig | 6.882 | ./fib | 9.299 | ซิก |
| 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 |
| ไป | 18.948 | ไปสร้าง fib.go | 1.107 | ./fib | 17.842 | ไป |
| คริสตัล | 20.525 | Crystal Build -ปล่อย fib.cr | 3.106 | ./fib | 17.420 | CR |
| เสียงกระเพื่อม | 25.726 | sbcl -load fib.lisp | 0.979 | ./fib | 24.747 | เสียงกระเพื่อม |
| โผรวบรวม | 31.707 | Dart Compile exe -o fib ./fib.dart | 1.558 | ./fib | 30.149 | DARTC |
| โคบอล | 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 |
| ชวา | 13.040 | Javac fib.java | 0.733 | จาวา | 12.307 | ชวา |
| สกาล่า | 15.836 | Scalac fib.scala | 2.682 | สกาล่า | 13.153 | สกาล่า |
| 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 |
| ร่อง | 70.123 | Groovyc Fib.groovy | 1.519 | ก้น | 68.604 | ร่อง |
| ภาษา | เวลา | วิ่ง | ต่อ |
|---|---|---|---|
| การปิดบัง | 17.815 | clojure -m fib.cljc | CLJC |
| จูเลีย | 18.000 | Julia -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 | อดีต |
| Lua Jit | 37.837 | luajit fib.lua | Luajit |
| Python (pypy) | 54.078 | pypy fib.py | pypy |
| ทับทิม (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 |
| Lua | 203.702 | lua fib.lua | Lua |
| ทับทิม | 393.625 | Ruby fib.rb | RB |
| งูหลาม | 423.427 | Python fib.py | พาย |
| เจเน็ต | 479.663 | Janet ./fib.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 |
คอมไพเลอร์ทั้งหมดได้รับการติดตั้งโดยใช้ APT หรือ ASDF บน Ubuntu 24.04 Docker Image:
| ภาษา | รุ่น |
|---|---|
| อาดา | 13.2.0 |
| การประกอบ | 13.2.0 |
| ทุบตี | 5.2.21 |
| ขนมปัง | 1.1.38 |
| คริสตัล | 1.14.0 |
| การปิดบัง | 1.12.0.1488 |
| โผ | 3.5.4 |
| DMD | 2.109.1 |
| Dotnet | 9.0.101 |
| น้ำอมฤต | 1.17.3 |
| เอล์ม | 0.19.1 |
| Erlang | 27.1.2 |
| คนหาอาหาร | 13.2.0 |
| G ++ | 13.2.0 |
| GCC | 13.2.0 |
| gnucobol | 3.2.0 |
| กอลัน | 1.23.2 |
| ร่อง | 4.0.24 |
| มีเล่ห์เหลี่ยม | 3.0.10 |
| Haskell | 9.8.3 |
| เจเน็ต | 1.36.0 |
| ชวา | OpenJDK-23 |
| จูเลีย | 1.11.1 |
| K | 3.6 |
| Kotlin | 2.1.0 |
| LDC | 1.39.0 |
| Lua | 5.4.7 |
| Luajit | 2.1.1 |
| โมโจ | 24.5.0 |
| ไม่มีความสุข | 2.2.0 |
| nodejs | 23.3.0 |
| Ocaml | 5.2.1 |
| โอดิน | Dev-20124-11 |
| ประเทศปาสคาล | 3.2.2 |
| Perl | 5.40.0 |
| PHP | 8.4.1 |
| ม้า | 0.58.7 |
| Powershell-Core | 7.4.6 |
| งูหลาม | 3.12.0 |
| pypy | 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 |