- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/pidigits.html
1.0 C gcc #6 0.59 2,444 1090 2.37 100% 100% 100% 98%
1.1 C++ g++ #6 0.66 5,152 986 2.63 100% 100% 100% 100%
1.2 Rust #4 0.71 2,672 799 0.73 3% 0% 0% 100%
1.2 Free Pascal #3 0.73 2,268 530 0.73 0% 0% 100% 0%
1.4 F# .NET #6 0.82 34,428 905 0.83 1% 2% 96% 1%
1.4 Haskell GHC #5 0.83 6,056 928 0.84 0% 99% 1% 1%
1.5 Ada 2012 GNAT 0.88 4,704 1130 0.89 0% 0% 100% 1%
1.5 Rust #2 0.88 2,800 1306 0.89 0% 1% 100% 0%
1.5 C++ g++ #4 0.89 4,280 513 0.92 0% 2% 1% 100%
1.5 OCaml #7 0.89 5,968 593 0.90 0% 0% 1% 100%
1.5 Swift #2 0.89 9,256 600 0.91 3% 0% 0% 99%
1.5 PHP #5 0.91 13,196 399 0.96 2% 0% 3% 100%
1.5 C# .NET #5 0.92 35,404 977 0.96 98% 3% 2% 1%
1.6 Java #3 0.93 36,552 764 0.98 2% 3% 1% 99%
However, Java is one of the fastest and most energy-efficient object-oriented language. Interpreted languages like Perl, Python, and Ruby were among the least energy efficient
Using the Computer Benchmarks Game, the team of researchers tested these languages by compiling/executing such programs using the state-of-the-art compilers, virtual machines, interpreters, and libraries.
They then analyzed the performance of the different implementation considering three variables: execution time, memory consumption and energy consumption.
https://jaxenter.com/energy-efficient-programming-languages-137264.html
https://jaxenter.com/wp-content/uploads/2017/09/energy-efficient-languages-768x689.png
https://jaxenter.com/wp-content/uploads/2017/09/energy-efficient-languages-2-768x368.png
Меня удивило как в данном «PHP» обговняет «Йажу» и в целом вся эта скриптуха сливает Сишке где-то в полтора раза.
Ага. «Computer Benchmarks Game»
Смотрим как state-of-the-art virtual machines реализуют алгоритмы.
Начнём с «Хацкеля».
Ой, а что это тут у нас:
Подожди, мразь бездарная. Ты ведь просто симпортила написанную на Сишке либу GNU Multiple Precision Arithmetic Library (GMP).
Кокококой язык!
>DllImport "gmp"
Ой. Снова GNU MP Bignum Library.
А вот вроде в исходнике rust нету gmp. Но есть какой-то extern crate rug
Опять?
Очевидно, что сваять на дrustне ничего нельзя - поэтому приходится воровать.
Программа начинается так:
Все вызовы явно ворованы из С.
«Йажа»
Жаба-отребье, как и всякое другое отребье не может ничего родить.
Оно может только воровать, врать и соревноваться с другими инвалидами.
И вот на основе таких примеров с прямыми вызовами ворованных Сишных либ, потом делаются заявления о энегроэффективности и пирфомансе ${govno_lang_name}.
При этом очевидно, что с простым «Си» они не могут соревноваться даже делая сишные вызовы.
Перловцы прямо так и написали.
В «FPC» я даже встречал честные попытки перевода гнутых библиотек (правда, переводили только те библиотеки, в которых кода немного).
«OCaml»
https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/pidigits-ocaml-7.html
«FPC»
https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/pidigits-fpascal-3.html
«GNAT»
https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/pidigits-gnat-2.html
А вот и нет.
Бездарная мразь только что и может: воровать друг у друга и кукарекать.
Реально ни одного языка с альтернативной реализацией?
С другой стороны да, с нуля GMP не выебать. И авторы gmp будут очень рады, если кто-то напишет быстрее: значит ещё есть куда оптимизировать.
Ну там есть примеры в самом низу.
Йажа за 7 секунд (против Сишной секунды).
Но кто туда будет листать? Смотрят же обычно самое лучшее время для ${lang_name}.
Я просто удивился тому что потом результаты такого вот «сравнения языков» используют в пропагандистских методичках для сектантов и питухов.
Причём честные Хаскел и Govno умудрились обогнать Ruby и Perl
https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/pidigits-ruby-5.html
https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/pidigits-perl-4.html
Которые использовали GMP, и всё-равно позорно слили
Просто для пропаганды берут сверху.
При этом они сливают Сишке в 3-4 раза (что на самом деле очень достойно).
Ибо честная Йажа сливает тюнингованой либе в 12 раз, а FPC в 25 )))
«Julia»
никто не хочет пофорсить, кстати?
Он в других числодробильных бенчах достойно выступает на пару с Фортраном.
Причём они, не читеря, там обгоняют некоторые примеры на С/C++/Rust с SSE-интринсиками (!).
https://www.zverovich.net/2016/05/13/giving-up-on-julia.html
уже приносил когда-то
К тому же она Гомоиконна.
https://github.com/JuliaLang/julia/pull/33946
> индекс массива с 1
Ну мать-мать-ики же.
С MMX вообще жопа была: инструкции MMX использовали те же регистры, что и инструкции для плавающего питуха, поэтому там ещё нужно было тратить время на переключение режима работы, чтобы данные не распитушило.
Реальный прирост скорости можно было получить, только если пишешь большой кусок кода целиком этими инструкциями.
Помню Царь лютовал что это говно, и надо юзать стековый FPU.
Царь был за числа с фиксированным разделителем (в идеале вообще за целых питухов).
https://govnokod.ru/13422#comment188577
«Я могу писать быстрее и лучше на сишке - мне удобней. Мне для этого не надо как рядовому питушку осиливать Сишку.
Всё должно отражать всё - если твоей конпелятор написан как говно - он и оптимизировать будет как говно. И да, оптимизации не нужны я уже не помню где был тред, помоему на лоре.
Вобще для моего мегаязыка оптимизации не нужны, ибо оптимизации нужны для питухов - там будет удобная ручная предсказуемость, как в ассемблере.
В место питушских переменных - там буду переменные, который на самом деле по умолчанию безымянные регистры. Явный их биндинг на имена, явный ялиасинг. Никаких стеков и прочей ереси.
Никаких автовекторизаций циклов( которые в 50% дают деградацию, допустим гцц(и все другие конпеляторы) по умолчанию вместо стекового фпу года гинерят ссе код, который медленее фпушного и теряют 10-30% производительности.
»
Правда что он имел ввиду я честно говоря не понял.
https://xsport.ua/upload/news-photos/14-09-2017-ao/a0YpIcWI.jpg
> Никаких стеков и прочей ереси.
> по умолчанию вместо стекового фпу года гинерят ссе код, который медленее
Потом жертве внушают, что «SSE» хуже пидораса стека.
Потом предлагают сопоставить эти два тезиса.
https://govnokod.ru/13189#comment182595
https://govnokod.ru/13180#comment181435
Не знал что в «Хаскелл» возможны утечки памяти.
Это не утечки, а OOM'ы скорее. Вечная проблема ленивых вычислений -- или стек порвётся или куча.
Но как потенциальному пользователю языка мне приятно осознавать, что у меня будет шанс подключить сиштушню и работать с ней через удобный синтаксис более высокоуровневого языка.
И переносимость/надёжность кода падает до переносимости и надёжности Сишки.
Нету в винде libgmp — пердолься как Сёма, собирай. Проси на ГК чтобы тебе сделали репу бинарными пакетами под XP.
Ни математического доказательства корректности, ни bounds checking...
> переносимости
Даже хвалёную сборку нативных образов в Дотнете использовать не можем (защитники Дотнета кукарекают, что он на каждом процессоре генерирует оптимальный для него код), потому что используем готовый бинарник, полученный из сишки, оптимизированный под неизвестный процессор.
-fsanitize=address