⚡
【React Native】console.time の代わりに使える performance
React Native (0.63時点) では、console.time
を使用することができない。
ポイント
-
console.time
を使用することができない。 - 代わりに
performance
というAPIが利用できる。 - 別に
Date
でも代用できる。
performance
var t0 = performance.now()
doSomething() // <---- measured code goes between t0 and t1
var t1 = performance.now()
console.log("Call to doSomething took " + (t1 - t0) + " milliseconds.")
単に、処理実行の起点と終点の時刻の差を得るだけなので、Date
オブジェクトを使用してもほとんど同じ結果が得られるはず。
Date
との違い
performance.now()が返す値は常に一定の割合で増加し、システムクロック(手動で調整したり、NTPなどのソフトウェアで歪んだりする場合があります)とは無関係です。そうでなければ、performance.timing.navigationStart + performance.now()はDate.now()とほぼ等しくなる。
Date
オブジェクトを利用する場合は、外部的な要因に影響を受ける場合があるため、performance
の方がパフォーマンス計測に関してはより信頼できそう。
サンプル
export const Performance = {
time1: undefined,
time2: undefined,
start: function () {
this.time1 = performance.now();
},
end: function () {
if (this.time1 === undefined) {
console.log('Timer has not started yet');
return;
}
this.time2 = performance.now();
console.log(this.time2! - this.time1! + ' milliseconds.');
this.time1 = undefined;
this.time2 = undefined;
},
};
{
Performance.start();
doSomething(); // 計測したい処理
Performance.end();
}
// "0.87654321 milliseconds."
参考
Discussion