[Тестирование IT-систем, PHP, Программирование] «Дело было вечером, делать было нечего» или краткая история о сравнении производительности языков программирования

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
16-Июн-2021 18:31

"Бенч" дело такое... После нескольких дней бездействия начинается ломка, хочется занять себя чем-нибудь. Иногда я отвлекался на pet-проекты, иногда на чтение литератыры... Сейчас же я расскажу о том что случилось во время последнего "режима ожидания".Меня многие годы волновала производительность ЯП (в основном интересовал PHP). Список ниже, содержал некоторые мои убеждения, до недавнего времени:
  • PHP один из самых медленных языков программирования
  • Python быстрее PHP
  • Ruby быстрее PHP
  • C/C++ намного быстрее Python и PHP вместе взятых
  • Assembler на порядок быстрее C/C++

Первым дело нужно было определится какой тест взять за основу. А давайте попробуем написать программу нахождения простых чисел (я в курсе что есть много алгоритмов нахождения простых чисел, неплохая статьяна данную тему). За основу был взят следующий код (примитивный перебор, который даже не прекращается, если уже знает что число не простое):
<?php
$primeNumberCount = isset($argv[1]) ? $argv[1] : 100;
$number = 0;
while ($primeNumberCount > 0) {
    $number++;
    $j = 0;
    for ($i = 1; $i <= $number; $i++) {
        if ($number % $i === 0) {
            $j++;
        }
    }
    if ($j === 2) {
        $primeNumberCount--;
    }
}
echo 'The latest prime number: ' . $number . PHP_EOL;
А дальше все как в тумане: Python, C/C++, Pascal, Go и тд. Все исходники можно глянуть здесь. Все тесты я делал в докере, что бы не засорять комп.Потом я наткнулся на книги Андрея Викторовича Столярова, и все завертелось с еще большей силой. Assembler я не трогал со времен универа, но после прочтения книги очень захотелось что-то написать. Могу сразу сказать, что тест для Assembler/NASM я писал больше недели, хотя на любой ЯП из тех что представлены в репозитории уходило не больше часа.Вот в принципе и результат моей работы:
После того как начали появляться первые результаты, я удивлялся все сильнее и сильнее:
  • оказывается PHP быстрее Python и Ruby
  • PHP вообще один из самых быстрых интерпретируемых языков
  • Python 3 медленнее Python 2
  • разница в работе программы написанной на С/C++ и Assembler/NASM в районе 15%
  • после Rust пришлось добавить тесты с флагом на компиляцию с оптимизацией
  • очень удивил результат теста Node.js/Javascript (разработчики V8 - красавцы)
  • и тд
На данный момент я планирую постепенно добавлять новые тесты (когда позволяет время и настроение). Цель данной статьи стоит не в том, чтобы показать какой ЯП самый быстрый, а в том что мы можем ошибаться в своих убеждения, и что не стоит верить всем байкам в курилке (многие из моих заблуждений именно от туда, кто-то где-то слышал что X быстрее Y).P.S.:Исходники можно найти здесь
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_testirovanie_itsistem (Тестирование IT-систем), #_php, #_programmirovanie (Программирование), #_php, #_python, #_assembler, #_c/c++, #_ruby, #_javascript, #_test (тест), #_proizvoditelnost (производительность), #_testirovanie_itsistem (
Тестирование IT-систем
)
, #_php, #_programmirovanie (
Программирование
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 21-Май 23:22
Часовой пояс: UTC + 5