Быстрый ответ
В jQuery (точнее, в Sizzle) мы используем this (мастер проверки и скорость открытия / index.html в вашем браузере), который, в свою очередь, использует benchmark.js . Это используется для проверки производительности библиотеки.
Длинный ответ
Если читатель не знает разницы между эталонным тестом, рабочей нагрузкой и профилировщиками, сначала прочитайте некоторые основы тестирования производительности в разделе «readme 1st» spec.org . Это для тестирования системы, но понимание этой основы также поможет JS-тестированию. Некоторые основные моменты:
Что такое эталонный тест?
Эталоном является «стандарт измерения или оценки» (словарь Вебстера II). Эталонный тест обычно представляет собой компьютерную программу, которая выполняет строго определенный набор операций - рабочую нагрузку - и возвращает некоторую форму результата - метрику - описывающую работу тестируемого компьютера. Компьютерные метрики обычно измеряют скорость: насколько быстро была выполнена рабочая нагрузка; или пропускная способность: сколько единиц рабочей нагрузки за единицу времени было выполнено. Запуск одного и того же эталонного теста на нескольких компьютерах позволяет проводить сравнение.
Стоит ли тестировать свое приложение?
В идеале, лучшим сравнительным тестом для систем будет ваше собственное приложение с вашей собственной рабочей нагрузкой. К сожалению, зачастую нецелесообразно получать широкую базу надежных, воспроизводимых и сопоставимых измерений для различных систем, используя ваше собственное приложение с вашей собственной рабочей нагрузкой. Проблемы могут включать создание хорошего контрольного примера, проблемы конфиденциальности, трудности с обеспечением сопоставимых условий, времени, денег или других ограничений.
Если не мое собственное приложение, то что?
Возможно, вы захотите рассмотреть возможность использования стандартизированных ориентиров в качестве ориентира. В идеале стандартизированный бенчмарк должен быть переносимым и, возможно, уже запущен на интересующих вас платформах. Однако, прежде чем рассматривать результаты, необходимо убедиться, что вы понимаете взаимосвязь между своими приложениями / вычислительными потребностями и тем, что эталоном является измерение. Схожие тесты с типами приложений, которые вы запускаете? Имеют ли рабочие нагрузки похожие характеристики? Основываясь на ваших ответах на эти вопросы, вы сможете увидеть, как эталонный тест может приблизиться к вашей реальности.
Примечание: в качестве ориентира может выступать стандартизированный эталон Тем не менее, когда вы делаете выбор поставщика или продукта, SPEC не утверждает, что какой-либо стандартизированный эталонный тест может заменить эталонный тест вашего собственного реального приложения.
Тестирование производительности JS
В идеале, лучшим тестом производительности будет использование собственного приложения с переключением рабочей нагрузки, что вам нужно для тестирования: разные библиотеки, машины и т. Д.
Если это невозможно (и обычно это не так). Первый важный шаг: определите свою рабочую нагрузку. Он должен отражать нагрузку на ваше приложение. В этом выступлении Вячеслав Егоров говорит о дерьмовых нагрузках, которых следует избегать.
Затем вы могли бы использовать такие инструменты, как benchmark.js, чтобы помочь вам собирать метрики, обычно скорость или пропускную способность. На Sizzle нам интересно сравнить, как исправления или изменения влияют на системную производительность библиотеки.
Если что-то действительно плохо работает, ваш следующий шаг - поиск узких мест.
Как мне найти узкие места? Профайлеры
Каков наилучший способ профилирования выполнения JavaScript?