Posted at

メソッドごとにパフォーマンスを計測したい

More than 3 years have passed since last update.

思ったよりも簡単です。やり方はFunction.prototype.applyを使ってあるメソッドの実行をhookするだけです。


js


function calcPerf (tag, tgt, func, args) {
tgt = tgt || this;
args = args || [];
var n = performance.now();
func.apply(tgt, args);
var t = performance.now() - n;
if ( t > 16 ) {
// over 60fps
console.warn(tag+": takes "+t+" ms!";
}
}



js


calcPerf("drawSome", that, that.prototype.drawSome, [flag]);


こうすることで16ms以上かかったメソッドの実行を検出することができます。問題は実行するfuncの中のどの部分がheavyなのかは分かないという点ですが。