INTEGRITY Dokumentace

Výkon a časovače

Kontext

Workers runtime podporuje podmnožinu Performance API, používá se k měření časování a výkonu, stejně jako časování subrequestů a dalších operací.

performance.now()

performance.now() metoda vrací časové razítko v milisekundách, které představuje čas uplynulý od performance.timeOrigin.

Když jsou Workery nasazeny na Cloudflare, z bezpečnostních důvodů zmírnění útoků Spectre, API, které vrací časovače, včetně performance.now() a Date.now(), posunou se nebo zvýší pouze po provedení vstupně výstupní operace. Uvažte následující příklady:

Time is frozen, start will have the exact same value as end.
const start = performance.now();
for (let i = 0; i < 1e6; i++) {
  // do expensive work
}
const end = performance.now();
const timing = end - start; // 0
Čas postupuje, protože mezi start a end proběhl subrequest.
const start = performance.now();
const response = await fetch("https://developers.cloudflare.com/");
const end = performance.now();
const timing = end - start; // duration of the subrequest to developers.cloudflare.com

Obalením subrequestu voláními performance.now() nebo Date.now() API můžete měřit dobu trvání subrequestu, načtení klíče z KV, objektu z R2 nebo jakékoli jiné formy I/O operací ve vašem Workeru.

Při lokálním vývoji se ale časovače zvyšují bez ohledu na to, zda dochází k I/O operacím. Pokud tedy potřebujete měřit časování části kódu, která je náročná na CPU a nezahrnuje I/O, můžete Worker spustit lokálně pomocí Wrangler, který využívá open-source Workers runtime, workerd, the same runtime that your Worker runs in when deployed to Cloudflare.

performance.timeOrigin

performance.timeOrigin API je vlastnost pouze pro čtení, která vrací výchozí časové razítko, od něhož se odvíjejí další měření.

V runtime prostředí Workers timeOrigin vlastnost vrátí 0.