[Тестирование IT-систем, PHP, Программирование] «Дело было вечером, делать было нечего» или краткая история о сравнении производительности языков программирования
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
"Бенч" дело такое... После нескольких дней бездействия начинается ломка, хочется занять себя чем-нибудь. Иногда я отвлекался на 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
===========
Похожие новости:
- [PHP, Карьера в IT-индустрии] PHP — я бы купил это за доллар
- [Тестирование IT-систем] К вопросу о сертификации ISTQB
- [JavaScript, ReactJS] React. Не в глубь, а в ширь. Композиция против реальности
- [Высокая производительность, История IT, IT-компании] История компании Silicon Graphics (перевод)
- [Программирование, Java, Kotlin] Увеличиваем throughput приложения в 2 раза или неблокирующая работа с Elasticsearch с использованием Kotlin coroutines
- [PostgreSQL, Программирование, SQL, Администрирование баз данных] Опыт хранения IP-адресов в PostgreSQL
- [Программирование, Разработка игр, Игры и игровые приставки, Интервью] Подкаст «Хочу в геймдев» #4 — текстовая версия
- [Open source, Python, Интервью] Разработчик популярного веб-фреймворка FastAPI — об истории его создания и перспективах аннотаций типов Python (перевод)
- [JavaScript, Google Chrome, API, Расширения для браузеров, Реверс-инжиниринг] Как я доделал функции за Яндекс.Музыкой
- [Open source, Программирование микроконтроллеров, DIY или Сделай сам, Электроника для начинающих] я подарю тебе маленькую вселенную
Теги для поиска: #_testirovanie_itsistem (Тестирование IT-систем), #_php, #_programmirovanie (Программирование), #_php, #_python, #_assembler, #_c/c++, #_ruby, #_javascript, #_test (тест), #_proizvoditelnost (производительность), #_testirovanie_itsistem (
Тестирование IT-систем
), #_php, #_programmirovanie (
Программирование
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 06:59
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
"Бенч" дело такое... После нескольких дней бездействия начинается ломка, хочется занять себя чем-нибудь. Иногда я отвлекался на pet-проекты, иногда на чтение литератыры... Сейчас же я расскажу о том что случилось во время последнего "режима ожидания".Меня многие годы волновала производительность ЯП (в основном интересовал PHP). Список ниже, содержал некоторые мои убеждения, до недавнего времени:
Первым дело нужно было определится какой тест взять за основу. А давайте попробуем написать программу нахождения простых чисел (я в курсе что есть много алгоритмов нахождения простых чисел, неплохая статьяна данную тему). За основу был взят следующий код (примитивный перебор, который даже не прекращается, если уже знает что число не простое): <?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; После того как начали появляться первые результаты, я удивлялся все сильнее и сильнее:
=========== Источник: habr.com =========== Похожие новости:
Тестирование IT-систем ), #_php, #_programmirovanie ( Программирование ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 06:59
Часовой пояс: UTC + 5