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.