Run benchmark что это
benchmark run
Смотреть что такое «benchmark run» в других словарях:
Benchmark (computing) — This article is about the use of benchmarks in computing, for other uses see benchmark. In computing, a benchmark is the act of running a computer program, a set of programs, or other operations, in order to assess the relative performance of an… … Wikipedia
Benchmark Capital — Infobox Company company name = Benchmark Capital company company type = Limited liability company foundation = 1995 key people = location = industry = Venture Capital products = Investments assets = homepage = [http://www.benchmark.com/… … Wikipedia
benchmark — n. & v. n. 1 a surveyor s mark cut in a wall, pillar, building, etc., used as a reference point in measuring altitudes. 2 a standard or point of reference. 3 a means of testing a computer, usu. by a set of programs run on a series of different… … Useful english dictionary
Benchmark interest rate — Also called the base interest rate, it is the minimum interest rate investors will demand for investing in a non Treasury security. It is also tied to the yield to maturity offered on a comparable maturity Treasury security that was most recently … Financial and business terms
benchmark interest rate — Also called base interest rate, it is the minimum interest rate investors will demand for investing in a non Treasury security. It is also tied to the yield to maturity offered on the comparable maturity treasury security that was most recently… … Financial and business terms
benchmark issue — Also called on the run or current coupon issue or bellwether issue. In the secondary market, the benchmark issue is the most recently auctioned Treasury issues for each maturity. Bloomberg Financial Dictionary … Financial and business terms
Benchmark issues — Also called on the run or current coupon issues or bellwether issues. In the secondary market, it s the most recently auctioned Treasury issues for each maturity. The New York Times Financial Glossary … Financial and business terms
AIM Multiuser Benchmark — The AIM Multiuser Benchmark, also called the AIM Benchmark Suite VII or AIM7, is a job throughput benchmark widely used by UNIX computer system vendors. Current research operating systems such as K42 use [… … Wikipedia
Off-the-Run Issue — Benchmark securities issues that are no longer the most recently issued in that maturity. They tend to trade with a wider spread than the on the run issues. ► See also On the Run Issue … Financial and business terms
Тестируем производительность PC c помощью бенчмарков и игр
Очень часто обладатели РС задаются вопросом — насколько мой компьютер будет быстрее после апгрейда? Получить ответ на него можно только проведя оценочное тестирование. Однако игр и бенчмарков много, а времени на тестирование мало, поэтому в данной статье мы свели актуальные программы, позволяющие оценить производительность РС.
Готовимся к тестированию
Еще один важный вопрос — выбор программы для тестирования. Большинство современных позволяют мониторить сразу несколько важных параметров, но они также могут замедлить и производительность. Перечислим же основные:
Самая популярная программа в мире для мониторинга параметров игры. Практически не оказывает влияния на игровой процесс, поддерживается практически всеми играми и записывает все отслеживаемые данные в файл. Недостатков у нее всего два — малое количество обновлений (в новых играх FRAPS может не работать), а также несовместимость с расплодившимися ныне низкоуровневыми API.
MSI Afterburner (скачать для Windows | iOS | Android )
Также популярная программа, которая, помимо мониторинга параметров работы игр и всех компонентов компьютера, позволяет изменять характеристики видеокарты. К недостаткам можно причислить сложности в настройке, а также неполную совместимость с играми и возможность конфликтов с системой/драйверами/левой пяткой Гордона Фримена.
Молодой конкурент FRAPS. Очень мощная и простая программа в плане мониторинга, часто обновляется и работает достаточно стабильно. Однако она сильнее загружает РС во время работы, что может исказить игровой процесс.
Бенчмарки
Это специализированные программы для тестирования производительности компьютера в 3D-приложениях, которые ещё называют «синтетикой», позволяют выяснить производительность любого РС в абсолютном выражении. Вы всегда сможете сравнить результаты вашей машины с данными миллионов других тестеров.
Кроме того, бенчмарки не требуют установки специализированных программ и показывают нагрузку на все элементы компьютера в реальном времени. Однако к минусам данных программ можно отнести то, что в них никто не играет, то бишь результат в играх может заметно отличаться в обе стороны от того, что вы намеряете бенчем. Оттого и «синтетика».
Список ведущих бенчмарков следующий:
3DMark с поддержкой DirectX 12 и 4K-разрешения — последняя версия самого популярного в мире бенчмарка. История 3DMark насчитывает более 10 лет и специалисты Futuremark всегда радовали аудиторию запоминающейся графикой. Так случилось и в этот раз — 3DMark (2013) запомнится потрясающим демотестом Fire Strike и четверкой графических профилей, прогнав каждый из которых вы оцените производительность собственной видеокарты.
3DMark 11 (скачать для Windows )
Вполне заслуженно мы отдали второе место еще одному продукту Futuremark. Вышедший в 2011 году бенчмарк пусть и не является таким же сложным, как 3DMark (2013), но все еще способен поставить слабые системы на колени — а еще вы сможете прогнать целый ряд тестов, например, на физику или на скорость обмена данными.
Unigine Heaven (скачать для Windows )
Один из самых красивых (в свое время) бенчмарков, специально заточенный для тестирования возможностей DirectX 11. Последняя версия позволяет оценить производительность актуальных видеокарт при использовании современных технологий.
FurMark (скачать для Windows )
Так называемый «бублик», раскаляющий вашу систему до тех пор, пока она не сгорит. Нет, серьезно, производители компьютерного железа даже не рекомендуют его использовать. Тем не менее, FurMark позволяет неплохо проверить возможности охлаждения вашей видеокарты и какой будет её температура при максимальной нагрузке.
Catzilla (скачать для Windows )
Новичок в мире бенчмарков, который завоевал огромное внимание благодаря запоминающемуся демотесту с огромной кошкой в главной роли. Помимо него, программа определит проблемы, влияющие на производительность вашего РС, и даст советы по их устранению.
Зачастую никаких проблем с данными программами быть не должно — скачал, установил и прогнал пару тестов, разве что их полный функционал будет доступен только в платной версии.
Crysis 3
Отличительная особенность Crysis 3 — великолепно проработанная растительность, а также изобилующие деталями локации. Если вы готовы посетить джунгли, выросшие на месте современного Нью-Йорка, а также повоевать с врагами во время одной из самых ресурсоемких миссий «Снять с предохранителя», то подготовьте 11 ГБ на жестком диске.
Middle-earth: Shadow of Mordor
Вышедшая в конце 2014 года Shadow of Mordor запомнилась многим игрокам по отличной графике. Кое-где она уступает Crysis 3 (таких моментов немного), что компенсируется открытым игровым миром, текстурами высокого разрешения и высококачественными моделями.
Metro: Last Light Redux
Как и оригинальная Metro 2033, Last Light в свое время оказалась очень требовательной к компьютерному железу, так что игра прекрасно подходит для тестирования современного «хардвэра», причем нагнёт она не только видеокарту, но и процессор. Ну а для тестирования вы можете выбрать такие карты, как «Закат», или «Мертвый город».
Tomb Raider
Игра также может похвастаться классными визуальными эффектами, качественной реализацией растительности, функцией TressFX, обилием элементов motion capture. В общем, настоящий хит от Crystal Dynamics, да еще и с отличной графикой! Ну как можно пройти мимо?
BioShock Infinite
Что касается визуальных возможностей, то BioShock Infinite может похвастаться качественными персонажами, запоминающимися локациями и сложными, многочисленными противниками. Все это хорошо нагружает все элементы РС, особенно во время миссий «Гавань Линкора» или «Площадь Тщания».
Far Cry 4
Вышедшая осенью 2014 года Far Cry 4 получилась очень запоминающейся с визуальной точки зрения. Тут вам и открытый мир, полный опасностей, отличные модели персонажей, качественные текстуры, замечательные эффекты и так далее. Как только вы пройдете пролог, то сразу оцените визуальное качество.
Ну а ваш компьютер наверняка оценит все эти прелести по-своему — Far Cry 4 требовательна как к центральному процессору и видеокарте, так и к объему ОЗУ. В общем, из игры получился отличный бенчмарк, главное освободить под него 40 ГБ.
Battlefield 4 [мультиплеер]
Если вы хотите провести самое жестокое и бескомпромиссное тестирование, то в этом может помочь лучший сетевой шутер современности, коим является Battlefield 4. Мультиплеер не только серьезно повышает нагрузку на компоненты компьютера (то есть FPS будет ниже, чем в однопользовательском режиме), но и требует больше времени на отрисовку кадра. Последнее не критично в играх с одиночным режимом, но в мультиплеере является важным фактором.
Итак, огромные карты, система «леволюции», большое количество игроков, сложная физическая модель и тотальная разрушаемость — все это еще никогда и нигде не собиралось воедино. Однако за такой бенчмарк придется заплатить не только деньгами, но и 70 ГБ свободного места.
Grand Theft Auto 5
Разумеется, эта статья не могла обойтись без недавней GTA 5. Rockstar хорошо потрудилась и РС-версия получилась не только хорошо оптимизированной, но и достаточно «графонистой». Игра потребует не только много ОЗУ и хорошую видеокарту, но и мощный процессор.
Witcher 3: Wild Hunt
Но если с нагрузкой на видеокарту все понятно, то нагрузку на РС увеличит открытый игровой мир, качественная анимация и мощные враги. В общем, это будет отличный бенчмарк, который наверняка поставит на колени даже самые мощные компьютеры.
Batman: Arkham Knight
Недавно появились системные требования Batman: Arkham Knight — они оказались достаточно гуманны для всех обладателей РС. Эту горячую новинку 2015 года нельзя упустить и не попробовать, заодно проверив, сколько же десятков FPS выдаст ваш компьютер.
Бенчмарки для ПК — что это и зачем нужно?
Бенчмарки — программы, которые оценивают потенциальные возможности комплектующих компьютера: видеокарт, процессоров, жестких дисков, оперативной памяти других компонентов. С помощью этих утилит может проверить производительность устройства при максимальной нагрузке.
Novabench
Novabench — программа для тестирования комплектующих компьютера. С помощью утилиты можно оценить производительность системы: мощность видеокарты, процессора и оперативной памяти. Результаты тестирования отображаются в виде набранных очков. При необходимости можно сравнить полученные результаты с оценками других пользователей приложения.
Программа совместима с Windows (32 и 64 бит), интерфейс англоязычный. Бенчмарк распространяется по условно-бесплатной лицензии. Цена полной версии со всеми функциями и инструментами составляет 19 долларов.
Преимущества лицензионной версии:
После запуска утилиты откроется главное окно, в котором отображается информация о системе: процессор, видеокарта и память.
В разделе «Temperature» можно посмотреть текущую температуру и загрузку процессора и видеокарты. Также здесь доступна история изменения показателей температуры (отображается только в Pro-версии программы Novabench).
«Schedule Tests» — этот инструмент позволяет запускать тесты по заданному расписанию в автоматическом режиме.
Чтобы начать тестирование компьютера, необходимо нажать кнопку «Start Tests» в главном окне приложения. Процесс анализа мощности комплектующих состоит из 6 этапов. Среднее время тестирования системы — 2-3 минуты. По завершению процесса открывается окно с подробными результатами: общая оценка компонента, скорость выполнения операций.
В левой части интерфейса расположена история всех выполненных тестов.
Преимущества бенчмарка Novabench:
SiSoftware Sandra
SiSoftware Sandra — программа для диагностики и сбора информации о комплектующих компьютера. Утилита позволяет тестировать видеокарты, процессоры, память, материнские платы. Всего в приложении доступно 13 различных эталонных тестов для каждой платформы.
Программа совместима с Windows (32 и 64 бит) и переведена на русский язык. Модель распространения ПО — бесплатная.
После запуска программы SiSoftware Sandra откроется раздел «Домашняя». Здесь можно посмотреть полезные советы по использованию ПО, открыть инструменты для обслуживания ПК и обратиться в техническую поддержку.
Чтобы запустить тестирование компьютера, необходимо перейти в раздел «Эталонные тесты». Каждый доступный тест разделен по категориям: процессор, физический накопитель, видеоадаптер и т.д. Для начала работы необходимо выбрать нужное устройство и тип теста. Далее следует кликнуть два раза на инструменте.
Запуститься новое окно для выполнения тестов. В случае с физическими накопителями пользователям следует выбрать устройство. Следующий шаг — нажатие на зеленую кнопку с галочкой в нижней части интерфейса.
Программа начнет анализ устройства. По завершению работы приложение SiSoftware Sandra Lite предоставит подробный отчет о проведенном тестировании устройства. В разделе «Устройства» пользователи программы могут посмотреть информацию о комплектующих компьютера: производитель, модель, серийный номер, версия установленных драйверов и т.д.
Преимущества SiSoftware Sandra:
FurMark
FurMark — удобная утилита для проведения стресс-тестов видеокарт, которые совместимы с API OpenGL. Благодаря приложению пользователи могут оценить потенциальные возможности видеоадаптера под нагрузкой. Полученные результаты анализа GPU можно сохранить в базе результатов для сравнения с данными других пользователей.
Программа работает на Windows (32 и 64 бит), но интерфейс представлен на английском языке. Модель распространения приложения FurMark — бесплатная.
После запуска программы пользователям необходимо выполнить базовые настройки в главном окне. Здесь следует выбрать режим тестирования: оконный или полноэкранный, включить или отключить Anti-aliasing, установить нужное разрешение экрана.
В правой части интерфейса в разделе «GPU benchmarks» расположены уже готовые пресеты стресс-теста: для 4K и UltraHD разрешения: 1080 и 720; QHD. При необходимости можно использовать обычные настройки.
Чтобы начать работу приложения необходимо нажать кнопку «GPU stress test». Программа FurMark начнет оценку возможностей видеокарты путем повышения максимальной нагрузки на устройство. Основные показатели тестирования можно посмотреть во время теста: среднее количество FPS, максимальная и минимальная температура видеокарты под нагрузкой. В нижней части окна измерения производительности GPU расположен график колебания показателей.
Cinebench
Cinebench — утилита для тестирования производительности видеокарты и процессора. Во время анализа мощности ЦП используются трехмерные сцены, которые содержат более 2000 объектов. Поддерживаются все популярные устройства от AMD, NVIDIA, Intel.
Программа совместима только с операционной системой Windows в 64-битных разрядностях. Язык интерфейса — английский, модель распространения Cinebench — бесплатная.
После запуска программы откроется главное окно. В левой части интерфейса в окне «Your system» можно посмотреть информацию о системе: процессор, видеокарта, операционная система, количество ядер.
Выше окна с информацией о системе расположены инструменты для запуска тестирования комплектующих. Для начала работы следует выбрать устройство (OpenGL или CPU) и нажать кнопку «Run». Программа начнет анализ производительности. Во время теста утилита «собирает» фотореалистичное изображение используя только мощности процессора или видеокарты.
Результаты проведенного анализа производительности отображаются в левом окне «Ranking» — они окрашены в оранжевый цвет. В этом окне идет сравнение результатов пользователя с аналогичными устройствами.
PC Benchmark
PC Benchmark — небольшая утилита, которая помогает тестировать производительность компьютера. С помощью приложение пользователи могут оценить потенциальные возможности своей системы. Результаты предоставляются в видео графика и количества набранных очков. По завершению анализа системы можно оптимизировать ПК, чтобы увеличить его производительность.
Утилита работает на всех актуальных версиях Windows, интерфейс англоязычный. Программа полностью бесплатная.
Чтобы начать работу с утилитой, необходимо запустить PC Benchmark. В открывшемся главном окне расположена только одна функция — «Begin Test». После выбора этого инструмента программа начнет анализ потенциальных возможностей компьютера.
Среднее время выполнение операции анализа системы — 4-5 минут. По завершению процесса тестирования откроется новое окно с результатами. Общая оценка системы показана в формате процентов.
Далее пользователи утилиты PC Benchmark могут открыть раздел «Test History» в главном окне приложения. Откроется новая страница в браузере. Здесь также показана оценка производительности системы, а также рекомендации, как улучшить работу компьютера.
Преимущества PC Benchmark:
Остались вопросы, предложения или замечания? Свяжитесь с нами и задайте вопрос.
Benchmarking. Введение для начинающих
С таким понятием, как измерение производительности рано или поздно сталкивается, наверное, абсолютно каждый программист.
В любой конторе, в любом коллективе, да даже, когда вы наедине со своим Тайлером Дерденом (но только, если ваш Тайлер — программист), обязательно, хотя бы раз, зайдет спор о том, как реализовать ту или иную функцию, чтобы она работала быстро. Но быстро, как характеристика обычно не котируется, поэтому предлагаю поговорить о том, как абстрактное быстро превращать в неабстрактное число.
Инструментарий
Замерять производительность можно разными инструментами, давайте поговорим о некоторых из тех, с которыми мне приходилось сталкиваться.
Нативная структура данных описывающая дату/время.
Все замеры сводятся к тому, что мы замеряем дату перед функцией, затем дату после функции, и берем разницу.
Стоит ли говорить, что ни о какой избыточной точности таких замеров не может идти речи из-за особенности хранения даты в ОС.
Системные часы инициализируются от аппаратных при загрузке операционной системы, и далее системное время поддерживаются с помощью регулярных прерываний от таймера. (Wikipedia)
Если говорить проще, то время кэшируется и обновляется с определенной частотой, и точность наших замеров не может превышать частоту этого обновления.
Единственный случай, где Date может пригодиться, это если вы заменяете скрипты, которые выполняются по несколько секунд, и разница в ± 100 мс для вас не играет никакой роли. Я вообще не рекомендую пользоваться Date для замеров.
Performance.now()
Возвращает временную метку измеряемую в миллисекундах с точностью до одной тысячной миллисекунды.
Для Node.js измерение идет с отсчетом от начала выполнения текущего потока выполнения, а для браузеров от события PerformanceTiming.navigationStart.
Замер времени выполнения функции выглядит вот так:
Мне приятнее сравнивать числа в формате op/sec, нежели в виде 0.00000546654.
Performance.now() не только точнее чем Date, но и куда удобнее. Вам не придется проводить каких-либо дополнительных манипуляций с переводом даты в timestamp и обратно, вы сразу получаете число в удобных единицах измерения.
Benchmark.js
Библиотека для точных измерений работы кода и сбора статистики выполнения. На мой взгляд она несколько тяжела для быстрого вникания, но предоставляет весь необходимый набор инструментов для замера производительности кода.
Benchmark.js довольно гибко позволяет писать тесты. Я вообще использую их в связке с mocha, чтобы их можно было удобно запускать в нужных папках, не запуская при этом ненужные.
Распространенные Ошибки
Замеры производительности только кажутся простым делом. На самом деле есть много подводных камней, которые могут испортить вам всю малину: от компилятора и самого js, до операционной системы.
Оптимизация компилятора
Ошибка характерная только для микробенчмарков и можно ее выразить во фразе:
Хочешь рассмешить компилятор — покажи ему микробенчмарки, которые собираешься сделать.
Давайте посмотрим на функцию для измерения цены получения значения длинны массива.
Функция для замера
*- Этот и все нижеприведенные результаты являются средним значением для тысячи вызовов.
Это количество вызовов функции за секунду, если вас интересует результат по получении поля то надо это время домножить на миллион.
Нельзя сказать, что это плохой вариант замера, мы миллион раз обращаемся к полю, а потом итоговое время выполнения функции умножаем на этот самый миллион и получаем итоговое количество операций в секунду.
На самом деле в итоговом значении еще учитывается стоимость вызова функции и стоимость итерации, но это, пожалуй, мелочи.
Так вот, казалось бы в чем проблема Hrodvitnir? А в том, что это все наглая ложь и не правда. Давайте-ка, запустим вот эту функцию:
А теперь внимание вопрос: мы один раз обратились к полю и выполнили на две операции в секунду меньше.
Ну давайте честно: две операции разницы это разница в 0.28%, и мы можем этим смело пренебречь, и считать оба этих результата эквивалентными. А вот это, в свою очередь должно нас озаботить.
Дело в том, что этот способ замерять время обращения к полю уже устарел. И устарел он примерно тогда же, когда js перестал быть интерпретируемым.
Компилятор просто-напросто превращает код из первого примера во второй. Происходит это, потому что код внутри цикла не имеет абсолютно никаких побочных эффектов, и может быть перемещен в область вне цикла, тем самым снизив стоимость итерации. Получается компилятор сломал нам бенчмарк.
И это не единственный вариант, как такое может произойти.
Компилятор умеет манипулировать кодом в циклах, умеет встраивать функции, и т. д. Конкретно эта оптимизация называется LICM.
Вместо этого, мы можем проверить обращение к полю вот так:
Результат получился в два раза меньше, чем первый, что, наверное, уже больше похоже на правду, хотя здесь идет искажние, за счет того, что мы записываем цисло не в переменную, а в массив, хотя не думаю, что оно сильное.
Но давайте честно, замерять скорость получения длинны массива занятие абсолютно неблагодарное.
Пример здесь приведен сугубо для того, чтобы продемонстрировать, что может быть и такая ситуация.
Замер одних и тех же данных
Это та ошибка, которая водила меня некоторое время за нос.
В качестве аргумента выступает массив от 1 до 1,000,000.
Ниже приведен метод из моей библиотеки, которым мы отфильтровываем все нечетные значения:
В общем-то, неплохо, быстрее даже чем нативный filter и быстрее, чем lodash.
Мы с вами, даже это проверили в статье Нативный — не значит быстрый
Но если мы замерим эту функцию на еще раз на неотсортированном массиве, то получим уже вот такой результат:
На неотсортированном массиве фильтрация идет в два раза дольше. При чем и у меня, и у lodash, и у нативной реализации.
А казалось, всего-то проверили на другом массиве.
Однократный замер
Давайте снова обратимся к замеру отсортированного массива из предыдущего примера и сделаем несколько разовых замеров:
No | Результат | Средний накопленный |
---|---|---|
1 | 30 | 30 |
2 | 27 | 28.5 |
3 | 18 | 25 |
4 | 24 | 24.75 |
5 | 13 | 22.4 |
Как видите, первый замер отличается от последнего более чем в два раза, при этом среднее неумолимо отклоняется от первой строчки.
Давайте отметим, это не 10 замеров подряд, это 10 запусков скрипта с одним замером.
Разница так велика, банально, оттого, что замеры происходят при разной загрузке ЦП.
Кроме того, мы замеряем не боевую функцию, а «холодную», ту, что выполняется интерпретируемо, а не ту, что уже скомпилирована в байт-код. В общем, все говорит о том, что разовые замеры не говорят ни чего о том, как эта функция будет вести себя в бою.
Замер в разных условиях
Эта ошибка косвенно связана с предыдущей: делайте замеры выключив все лишние программы.
Чем чище диспетчер задач тем лучше.
Просто, если вы делаете замеры, а параллельно открываете/закрываете браузер, играете в игры и т. д., то, я готов поспорить, что некоторые бенчмарки наверняка покажут причудливые результаты.
Желательно вообще никак не трогать машину. Чем меньше взаимодействия с ней, тем точнее результаты.
Хорошие практики
С вариантами, как запороть тесты мы разобрались, теперь давайте поговорим о том, как сделать их репрезентативнее.
Профилактика оптимизаций компилятора
(О боже, я сказал это вслух).
Мы уже проверили, что при отсутствии побочных эффектов, компилятор склонен к девиантному поведению и вырезает, и перемещает код без нашего ведома.
Чтобы такого не происходило, вам надо как можно сильнее «наследить»: в последнем примере мы записывали результат в массив и поэтому компилятор не вынес общий код за цикл. Только таким образом вы можете замерить именно то, что хотели.
Старайтесь, чтобы код не отрабатывал в холостую. И чтобы функция в бенчмарке не просто выполнялась, а чтобы ее результат возвращался.
Конечно, код во втором примере слишком сложный, чтобы компилятор смог определить, что в нем нет сайдэффектов, которые выходят за пределы функции, но уж лучше перестраховаться.
Замеры на разных данных
Если ваш код многозадачен, а под этим я подразумеваю то, что он используется на разных данных, то проверяйте на его на всевозможных разных данных.
Я поясню, проверяйте на лучших из возможных, на худших из возможных, проверяйте на наборе из средних данных. У вас должна быть полноценная картина о том, насколько ваш код хорош.
В этом плане бенчмарки, как юнит-тесты — покрытие должно быть полным.
В моей библиотеке используется паттерн стратегия и при определенных длинах массивов выбираются определенные алгоритмы и вследствие этого я делаю проверки на массивах длинными от 10,000,000 до 75 элементов.
Возможно вы назовете это избыточным, но я хочу видеть динамику времени работы методов от количества элементов.
Замеры на боевых данных
Нет лучше данных для проверки, чем данные из продакшена. Особенно, если они покрывают лучшие и худшие варианты.
Если лучшие и худшие варианты априори не возможны, то можно их пропустить.
Если мы проверяем производительность функции, которая обрабатывает нажатие клавиш в текстовое поле из расчета, что клавиши будут нажиматься не чаще, чем 10 символов в секунду, то нет смысла проверять на частоте в 200 символов в секунду.
Да и вполне вероятно, если пользователь вбивает 200 символов в секунду, ему скорее нужен врач, чем отзывчивый интерфейс.
Этот пункт не противоречит предыдущему, просто тестировать надо исходя из назначения кода. Предыдущий пункт относится в первую очередь к коду, которым будут пользоваться другие люди, которые могут использовать его с только им известными зданными. Это же пункт о том коде, который используете только вы. В этом случае, вы можете проверять производительность на тех данных, которые посчитаете достаточными — пустые проверки лишь будут отнимать время при тестировании и при их написании.
Ведение статистики
Мало собрать данные по производительности кода. Надо их еще правильно обработать, чтобы сделать корректные выводы.
Я, лично, работаю с межквартильным средним.
Формула проста — удаляем 25% самых медленных значений, удаляем 25% самых быстрых значений, а для оставшихся высчитываем среднее. Это позволяет удалить выбросы из выборки и оценивать результаты по средним значениям.
Важно понимать: работая с межквартильным средним мы не должны его брать, когда в одной выборке замеряем работу функции по самым худшим параметрам и по самым лучшим, и по средним значениям.
Это работает только для одного набора параметров. В иных случаях мы просто портим репрезентативность данных.
От себя могу добавить, что есть смысл удалять первые пару-тройку значений, чтобы удалить результат работы холодных реализаций, но при межквартильном среднем эта необходимость, как правило, отпадает.
Интерпретация значений
У нас есть функция:
У нее есть результат:
А теперь давайте подумаем: это много или мало? Вот на машине помощнее будет в два раза быстрее, а на машине послабее в два раза медленнее. И что нам делать?
Нужен этанол эталон. Выбирать можно какие-то нативные вещи или какие-то аналогичные реализации вашего функционала. Например, для своей библиотеки я выбрал нативные методы класса Array и lodash, и, при разработке ориентируюсь на них.
Возможно это будет ранее написанный вами функционал, и тогда вы сможете оценивать прогресс/регресс вашего кода.
Итоги
Бенчмаркинг это очень увлекательное занятие, которое помогает вовремя заметить проблемные места в коде, и сделать его лучше. Но это кроме того еще и занятие сопряженное со своими трудностями.
В этой статье я старался ответить на вопросы, которые у меня возникали в свое время, старался осветить некоторые интересные моменты.