Acabo de hacer un algoritmo de clasificación rápida en javascript y ahora quiero cronometrarlo. Mi primer acercamiento fue con console.time y console.timeEnd pero después de leer un poco descubrí que performance.now es la mejor opción. Lo único es que me están dando resultados muy diferentes como se puede ver a continuación:
script.js:89 performance.now: 5.099999904632568 ms script.js:93 console.time: 1.091796875 msAhora algunos de los resultados son mejores que otros pero la mayoría de las veces hay diferencias de hasta 5 ms. ¿Es solo que mi computadora se comporta de manera diferente cada vez o estoy usando los métodos de manera incorrecta?
Aquí está el código:
let startTime = performance.now(); quickSort(randomArray); let endTime = performance.now(); console.log(`performance.now: ${endTime - startTime} ms`); console.time("console.time"); quickSort(randomArray); console.timeEnd("console.time");El algoritmo de clasificación si es necesario:
function quickSort(array) { quickSortSplit(array, 0, array.length - 1); return array; } function quickSortSplit(array, low, high) { if (low < high) { let finalIndex = partition(array, low, high); quickSortSplit(array, low, finalIndex - 1); quickSortSplit(array, finalIndex + 1, high); } } function partition(array, low, high) { let pivotIndex = medianOfThree(array, low, high); let pivot = array[pivotIndex]; array.swap(pivotIndex, high); let i = low - 1; for (let j = low; j < high; j++) { if (array[j] <= pivot) { i++; array.swap(j, i); } } array.swap(i + 1, high); return i + 1; }