performance.now / mark / measure în JavaScript

Fișiere și criptografie Toate browserele moderne, Node.js 16+

Măsoară timpul cu precizie de fracțiuni de milisecundă, pentru a afla cât durează o operație.

Sintaxă
performance.now()
performance.mark(nume)
performance.measure(nume, startMark, endMark)

Ce face performance.now / mark / measure

performance.now() returnează numărul de milisecunde (cu zecimale) de la încărcarea paginii sau pornirea programului. Spre deosebire de Date.now(), nu este afectat de schimbarea ceasului calculatorului, deci este potrivit pentru măsurarea duratelor.

performance.mark(nume) pune un reper cu nume, iar performance.measure(nume, start, final) calculează durata dintre două repere. Măsurătorile apar și în fila Performance a uneltelor pentru dezvoltatori.

Parametri

Parametru Descriere
nume Numele reperului sau al măsurătorii.
startMark, endMark Opțional, la measure: reperele între care se măsoară.

Ce returnează

now: un număr. mark și measure: un obiect cu name, startTime, duration.

Exemple

Exemplul 1: Durata unei funcții

const t0 = performance.now();
let suma = 0;
for (let i = 0; i < 10_000_000; i++) suma += i;
const t1 = performance.now();

console.log(`calcul: ${(t1 - t0).toFixed(2)} ms`);

performance.mark("start");
JSON.parse(JSON.stringify(Array.from({ length: 100000 }, (_, i) => ({ i }))));
performance.mark("final");
console.log(performance.measure("json", "start", "final").duration.toFixed(2), "ms");

Rezultat posibil (diferă la fiecare rulare)

calcul: 8.37 ms
41.62 ms

Greșeli frecvente

  • Măsori o singură rulare și tragi concluzii. Prima rulare este adesea mai lentă (codul nu este încă optimizat); repetă de mai multe ori și fă media.

Comenzi înrudite

  • console.time / timeEnd: Măsoară cât durează o bucată de cod și afișează timpul în milisecunde.
  • Date.now: Returnează momentul curent ca număr de milisecunde de la 1 ianuarie 1970 UTC.
  • requestAnimationFrame: Rulează o funcție chiar înainte de următoarea redesenare a ecranului; baza animațiilor fluide.