Топ 10: JavaScript, Python, Java, TypeScript, C#, PHP, C ++, C, Shell, Ruby Research
Другие: Go, Rust, Swift, Crystal, Pony, Ada, Pascal, Fortran, Kotlin, Clojure, Scala, Mono, R, Dart, Jula, D, NIM, Cython, Python3, Pypy, Ruby Jit, Ocaml, Lisp, Haskell, Erlang, Elixir, Escript, Dart, Shame, Lua, Perash, em., emashi, emashi, em., emasthi, emashi, exclash, excl
Код выполняет рекурсивный фибоначчи на 47 -й позиции, в результате чего 2 971,215 073.
Фибоначчи может быть написан много разных способов. Цель этого проекта - сравнить, как каждый язык обрабатывает тот же код.
Вот версия 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Последний эталон был запущен 5 декабря 2024 года
| Язык | Общий | Компиляция | Время | Бегать | Время | Допредный |
|---|---|---|---|---|---|---|
| Ним | 0,832 | nim c -d: выпустить fib.nim | 0,669 | ./fib | 0,163 | ним |
| В | 4.835 | GCC -O3 -o fib fib.c | 0,112 | ./fib | 4.723 | в |
| 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 | адвокат |
| Ржавчина | 8.108 | rustc -c opt -level = 3 fib.rs | 0,358 | ./fib | 7,750 | рупий |
| Один | 8.838 | Один сборка fib.odin -file -0: скорость | 0,087 | ./fib | 8.751 | Один |
| Моджо | 8.947 | Mojo построить 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 | с |
| Быстрый | 9.781 | Swiftc -Oncecked 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 | мл |
| Zig | 16.181 | Zig Build -Exe -oreleaseFast ./fib.zig | 6.882 | ./fib | 9.299 | Zig |
| Хаскелл | 18.095 | rm ./fib.o && ghc -o3 -o fib fib.hs | 0,001 | ./fib | 18.094 | HS |
| Дюймовый | 18.193 | dmd -release -of = fib fib.d | 0,342 | ./fib | 17.851 | дюймовый |
| Идти | 18.948 | иди строить fib.go | 1.107 | ./fib | 17.842 | идти |
| Кристалл | 20.525 | Crystal Build -Elease fib.cr | 3.106 | ./fib | 17.420 | герметичный |
| LISP | 25.726 | sbcl -load fib.lisp | 0,979 | ./fib | 24.747 | LISP |
| Дарт составил | 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 | Java Fib | 12.307 | Ява |
| Скала | 15.836 | Scalac fib.scala | 2.682 | Scala Fib | 13.153 | Скала |
| Котлин | 16.286 | Kotlinc fib.kt | 4.074 | Java fibkt | 12.212 | кт |
| Эрланг | 28.378 | erlc +native +'{hipe, [o3]}' fib.erl | 0,402 | erl -noinput -noshell -s fib | 27.976 | эрл |
| Groovy | 70.123 | Groovyc fib.groovy | 1.519 | Groovy Fib | 68.604 | Groovy |
| Язык | Время | Бегать | Допредный |
|---|---|---|---|
| Клоджюр | 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 | младший |
| Эликсир | 35,243 | Erl_compiler_options = '[native, {hipe, [o3]}]' elixir fib.exs | пост |
| Луа Джит | 37.837 | Luajit fib.lua | Luajit |
| Python (PYPY) | 54,078 | pypy fib.py | пип |
| Руби (JIT) | 81.454 | Ruby -Jit fib.rb | rbjit |
| Язык | Время | Бегать | Допредный |
|---|---|---|---|
| Прозрачный | 28.380 | Escript fib.es | эс |
| Схема | 102.887 | Guile fib.scm | SCM |
| PHP | 157.312 | php fib.php | PHP |
| Луа | 203,702 | Lua fib.lua | Луа |
| Рубин | 393.625 | Ruby Fib.rb | РБ |
| Питон | 423,427 | Python fib.py | пирог |
| Джанет | 479,663 | Джанет ./fib.janet | Джанет |
| Перв | 1490.416 | perl fib.pl | пл |
| Раку | 1672.015 | Rakudo fib.raku | Раку |
| TCL | 2230.883 | tclsh fib.tcl | TCL |
| Ведущий | 2575.249 | R -f fib.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 |
| дотнет | 9.0.101 |
| эликсир | 1.17.3 |
| вере | 0,19,1 |
| Эрланг | 27.1.2 |
| Фортран | 13.2.0 |
| G ++ | 13.2.0 |
| GCC | 13.2.0 |
| Гнукобол | 3.2.0 |
| Голанг | 1.23.2 |
| Groovy | 4.0.24 |
| ужиевать | 3.0.10 |
| Хаскелл | 9.8.3 |
| Джанет | 1.36.0 |
| Ява | OpenJDK-23 |
| Джулия | 1.11.1 |
| K | 3.6 |
| Котлин | 2.1.0 |
| LDC | 1.39.0 |
| Луа | 5.4.7 |
| Luajit | 2.1.1 |
| Моджо | 24.5.0 |
| ним | 2.2.0 |
| Nodejs | 23.3.0 |
| ocaml | 5.2.1 |
| Один | DEV-2024-11 |
| Паскаль | 3.2.2 |
| перв | 5.40.0 |
| PHP | 8.4.1 |
| пони | 0,58,7 |
| PowerShell-Core | 7.4.6 |
| питон | 3.12.0 |
| пип | 7.3.17 |
| ведущий | 4.4.2 |
| Ракудо | 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 |
| Zig | 0,13,0 |