Performance: timeOrigin ããããã£
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2021å¹´9æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
timeOrigin 㯠Performance ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®èªã¿åãå°ç¨ããããã£ã§ãããã©ã¼ãã³ã¹é¢é£ã®ã¿ã¤ã ã¹ã¿ã³ãã®ãã¼ã¹ã©ã¤ã³ã¨ãã¦ä½¿ç¨ããé«è§£å度ã®ã¿ã¤ã ã¹ã¿ã³ããè¿ãã¾ãã
ã¦ã£ã³ãã¦ã³ã³ããã¹ãã§ã¯ããã®å¤ãããã²ã¼ã·ã§ã³ãéå§ããæå»ã表ãã¾ãã Worker ããã³ ServiceWorker ã³ã³ããã¹ãã§ã¯ããã®å¤ã¯ã¯ã¼ã«ã¼ãå®è¡ãããæå»ã表ãã¾ãããã®ããããã£ã使ç¨ãã¦ãã³ã³ããã¹ãéã§æå»ã®åç¹ãåæãããã¨ãã§ãã¾ã (ä¸è¨ä¾ãåç
§)ã
ã¡ã¢:
performance.timeOrigin ã®å¤ã¯ããã®æå»ã§å®è¡ããã Date.now() ãè¿ãå¤ã¨ç°ãªãå ´åãããã¾ããããã¯ã Date.now() ãã·ã¹ãã ãã¦ã¼ã¶ã¼ã®ã¯ããã¯èª¿æ´ãã¯ããã¯ã¹ãã¥ã¼ãªã©ã®å½±é¿ãåãããã¨ãããããã§ãã timeOrigin ããããã£ã¯ monotonic clock ã§ãããç¾å¨ã®æå»ãæ¸å°ãããã¨ã¯ãªãããããã®èª¿æ´ã®å½±é¿ãåãã¾ããã
å¤
ç¾å¨ã®ææ¸ã®ã©ã¤ãã¿ã¤ã ã®å§ã¾ãã¨ã¿ãªãããé«è§£å度ã®ã¿ã¤ã ã¹ã¿ã³ãããã®ããã«è¨ç®ããã¾ãã
-
ã¹ã¯ãªããã®ã°ãã¼ãã«ãªãã¸ã§ã¯ãã
ã¦ã£ã³ãã¦ã®å ´åãæå»ã®åç¹ã¯ä»¥ä¸ã®ããã«æ±ºå®ããã¾ãã- ç¾å¨ã®
DocumentãWindowå ã§æåã«èªã¿è¾¼ã¾ãããã®ã§ããå ´åãæå»ã®åç¹ã¯é²è¦§ã³ã³ããã¹ãã使ãããæå»ã«ãªãã¾ãã - ã¦ã£ã³ãã¦å
ã®ååèªã¿è¾¼ãã ææ¸ãã¢ã³ãã¼ãããéç¨ã§ãåã®ãã¼ã¸ããé¢ãããã©ãããã¦ã¼ã¶ã¼ã«ç¢ºèªãããããã®ç¢ºèªãã¤ã¢ãã°ã表示ãããå ´åãæå»ã®åç¹ã¯ãã¦ã¼ã¶ã¼ãæ°ãããã¼ã¸ã«ç§»åãããã¨ãåãå
¥ãããããã©ããã確èªããæå»
:ã¨ãªãã¾ãã - ããä¸è¨ã®ã©ã¡ããæå»ã®åç¹ã決å®ããªãå ´åãæå»ã®åç¹ã¯ã¦ã£ã³ãã¦ã®ç¾å¨ã®
Documentã使ããããã²ã¼ã·ã§ã³ãé ç½®ãããæå»ã«ãªãã¾ãã
- ç¾å¨ã®
-
ã¹ã¯ãªããã®ã°ãã¼ãã«ãªãã¸ã§ã¯ãã
WorkerGlobalScopeã®å ´åï¼ã¤ã¾ããã¹ã¯ãªãããã¦ã§ãã¯ã¼ã«ã¼ã¨ãã¦å®è¡ããã¦ããå ´åï¼ãæå»ã®åç¹ã¯ã¯ã¼ã«ã¼ã使ãããæç¹ã«ãªãã¾ãã -
ä»ã®ãã¹ã¦ã®å ´åãæå»ã®åç¹ã¯ä¸å®ã§ãã
ä¾
>ã³ã³ããã¹ãéã§æå»ãåæ
ã¦ã£ã³ãã¦ã¨ã¯ã¼ã«ã¼ã®ã³ã³ããã¹ãã§ç°ãªãæå»ã®åç¹ãèæ
®ããããã«ã timeOrigin ããããã£ã®å©ãã«ããã¯ã¼ã«ã¼ã¹ã¯ãªããããæ¥ãã¿ã¤ã ã¹ã¿ã³ãã夿ãããã¨ãã§ãã¾ãã
worker.js ã§ã¯
self.addEventListener("connect", (event) => {
const port = event.ports[0];
port.onmessage = function (event) {
const workerTaskStart = performance.now();
// doSomeWork()
const workerTaskEnd = performance.now();
};
// ã¯ã¼ã«ã¼ç¸å¯¾ã®ã¿ã¤ã ã¹ã¿ã³ãã絶対ã¿ã¤ã ã¹ã¿ã³ãã«å¤æããã¦ã£ã³ãã¦ã«éä¿¡ãã¾ãã
port.postMessage({
startTime: workerTaskStart + performance.timeOrigin,
endTime: workerTaskEnd + performance.timeOrigin,
});
});
main.js ã§ã¯
const worker = new SharedWorker("worker.js");
worker.port.addEventListener("message", (event) => {
// 絶対ã¿ã¤ã ã¹ã¿ã³ããã¦ã£ã³ãã¦ç¸å¯¾ã¿ã¤ã ã¹ã¿ã³ãã«å¤æ
const workerTaskStart = event.data.startTime - performance.timeOrigin;
const workerTaskEnd = event.data.endTime - performance.timeOrigin;
console.log("ã¯ã¼ã«ã¼ã¿ã¹ã¯ã®éå§: ", workerTaskStart);
console.log("ã¯ã¼ã«ã¼ã¿ã¹ã¯ã®çµäº: ", workerTaskEnd);
});
仿§æ¸
| 仿§æ¸ |
|---|
| High Resolution Time > # dom-performance-timeorigin > |