Почему Я Не Доверяю Микробенчмаркам



Почему я не доверяю микробенчмаркам

Я думаю, что этот скриншот настоящий существующий замеров производительности достаточно, чтобы передать смысл статьи, но если читателю интересны мои мысли по этому поводу, то добро пожаловать.

Программисты одержимы скоростью выполнения программ.

Мы следим за скоростью даже там, где эта скорость не очень важна.

Иногда вопреки здравому смыслу и логике.

Даже не до конца понимая, что на самом деле означают слова «скорость» или «производительность» в каждом конкретном случае.

Нам по-прежнему нужно самое быстрое оборудование, самый быстрый язык и самая легкая среда.

Я охотно верю, что ты, юзернейм, не такой.

Что вы сами способны написать правильный бенчмарк, знаете, как работает тот или иной рантайм, ненавидите оптимизацию скорости просто ради оптимизации скорости и знаете толк в железе.

Но есть еще люди из предыдущего пункта.

Я проверил.

Когда я увидел пример на картинке выше, я сначала подавился кофе.

– Как машинопись может работать быстрее, чем яваскрипт, и при этом потреблять в несколько раз меньше памяти?! - Ни за что! Typescript не имеет собственной среды выполнения.

То есть невозможно нигде или почти некуда запускать машинописный текст. Вы должны сначала скомпилировать его в javascript, который затем запустить во время выполнения, который понимает этот самый javascript. В данном случае такой средой выполнения выступал узел v11.3434. По счастливому совпадению пример javascript выполняется в той же среде выполнения.

Вместо сравнения языков мы получаем микросоревнования по спортивному программированию.

Машинописный код JavaScript-код Оказывается, время выполнения, потребление памяти и другие характеристики критически зависят от того, кто и как написал этот проверочный код. Конечно, аргументация о том, что машинопись здесь может быть надуманной.

силы напишите «правильный код».

Но скомпилировать машинопись в яваскрипт вам никто не помешает, да и мест с оптимизацией я тоже не увидел.

Кстати, давно ли вы видели, чтобы кто-то писал подобный код и его проверяли? Солидом, ООП и ФП здесь даже не пахнет. Код четко написан в процедурном стиле.

Потому что у него другая задача.

Поймите правильно, код хоть и решает проблему, но требует рефакторинга перед продакшеном.

И неизвестно, как рефакторинг повлияет на производительность.

Но это, наверное, придирки.

Мы разобрались с примером.

Очевидно, что пример неадекватен.

Но давайте посмотрим, как другие языки программирования прошли тот же тест.

Почему я не доверяю микробенчмаркам

Насколько правильно, по вашему мнению, можно сделать вывод, что Swift быстрее Go? Я думаю, что это неправильно.

Достаточно взглянуть на тот факт, что две реализации в Rust (строка 2 и строка 6) различаются по времени в 2 раза.

И здесь проблема выглядит серьезнее.

Если сравнение машинописи и яваскрипта воспринимается как шутка, то в случае с другими языками проблема уже не столь очевидна.

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

Почему я не доверяю микробенчмаркам

Оказывается, код бенчмарка нужно внимательно проверять.

Вопрос: Когда вы в последний раз видели человека, который пытался перепроверить, как пишется бенчмарк-код, сразу после того, как увидел стандартные красивые графики производительности? Я встречаю таких людей очень редко.

Я думаю, что таких инженеров исчезающе мало.

С другой стороны, перед нашими глазами множество примеров, когда на основании подобных испытаний делается вывод о производительности и легкости техники.

И, кстати, формируется общественное мнение.

Здесь Здесь Вы можете сравнить производительность основных фреймворков JavaScript.

Почему я не доверяю микробенчмаркам

Вы все еще доверяете результатам? Мне не.

Вот и все.

Но есть и хорошие новости.

Навыки программиста по-прежнему сильно влияют на производительность программы.

Заключение: Микробенчмарки ничего вам не покажут, если вы не являетесь специалистом по производительности конкретной платформы.

А еще лучше, если вы напишете эти бенчмарки сами, учитывая ваши требования и условия, понимая при этом, что делаете.

P.S.: Пост написан как ответ на поспешные сравнения и выводы о продуктивности в будущем.

Конечно, все выводы и аргументы из статьи можно привести и без этого примера, но с цифрами и конкретикой веселее и понятнее.

В опросе могут участвовать только зарегистрированные пользователи.

Войти , Пожалуйста.

Проверяете ли вы корректность микробенчмарков? 24.03% Да 37 74.03% Нет 114 1.95% Напишу в комментариях Проголосовало 3 154 пользователя.

77 пользователей воздержались.

Теги: #программирование #Высокая производительность #JavaScript #typescript #продуктивность #здравый смысл

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.