Ответ 1
Я столкнулся с API производительности. То, что вы ищете, вероятно, Performance.now()
, которое даст вам микросекундное разрешение.
Метод
Performance.now()
возвращает DOMHighResTimeStamp, измеренный в миллисекундах, с точностью до одной тысячной миллисекунды, равной число миллисекунд с PerformanceTiming.navigationStartсвойство и вызов метода (источник).
Пример MDN:
var t0 = performance.now();
doSomething();
var t1 = performance.now();
console.log("Call to doSomething took " + (t1 - t0) + " milliseconds.")
Функция, которую вы могли бы использовать для проверки производительности определенной короткой части кода несколько раз, вы могли бы использовать следующее:
/**
* Finds the performance for a given function
* function fn the function to be executed
* int n the amount of times to repeat
* return array [time elapsed for n iterations, average execution frequency (executions per second)]
*/
function getPerf(fn, n) {
var t0, t1;
t0 = performance.now();
for (var i = 0; i < n; i++) {
fn(i)
}
t1 = performance.now();
return [t1 - t0, repeat * 1000 / (t1 - t0)];
}
Возвращает время, в течение которого выполняется однократное выполнение fn(i)
в миллисекундах, и частота выполнения (выполнение в секунду). Чем выше значение n
, тем больше точность, чем больше, тем больше времени требуется для проверки. Аргумент i
может быть включен в тестируемую функцию, которая содержит текущую итерацию функции.