2016-11-18 3 views
2

Я сейчас пишу бумагу. В этой статье я расскажу об оптимизации кода. В моем примере я собираюсь выделить два массива в JavaScript. Сравнение фильтра ES5 против вложенного цикла.Академически правильный способ тестирования кода JavaScript?

Мои тесты с использованием jsPerf.com прошли, как ожидалось. Фильтр ES5 на 89-90% медленнее, чем вложенный цикл. Аналогичный результат можно найти, используя performance.now() (запуск таймера, код запуска, таймер остановки и расчет времени).

Все они отлично подходят для бенчмаркинга. Действительно, они есть. Однако они не являются академически правильными. Сразу после завершения первого теста, что произойдет, если я запустил тестовый тест на 100% CPU? Тогда результаты теста 2 «недействительны».

Каков наилучший способ, правильный способ, сравнить два фрагмента кода JavaScript?

+0

https://mathiasbynens.be/notes/javascript-benchmarking – robertklep

+0

@robertklep Я прочитал это и все проблемы, однако, если я скажу: «Я управлял этим кодом миллион раз и занимал среднее время», я собираюсь получить от этого. Это не правильный способ сделать это. Результаты будут разными, если бы я запускал тесты при 100% использовании ЦП. – MortenMoulder

+0

@MortenMoulder результаты будут разными с разными браузерами. С разными версиями браузеров. Это означает, что результаты, которые вы делаете _now_, могут быть совершенно разными через несколько месяцев. Каково ваше требование о действительности? – vlaz

ответ

0

Я нашел ответ. Используя Google Chrome Profiler, я смог получить процессорное время для моей функции.

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

Смежные вопросы