C#ではよく以下のように Disposer を使って特定区間の時間を計測するような以下のようなクラスを作って使ったりしています。
using(new ScopedStopwatch(time => Console.WriteLine($"hoge: {time} ms")))
{
// 時間を計測したい処理
}
JavaScriptでも似たようなことができないのか調べたら自分で Disposer 的なものを作ればできそうなことがわかったので作ったものを載せておきます。
class ScopedStopwatch {
constructor(logFunc) {
this._logFunc = logFunc;
this._startTime = Date.now();
}
dispose() {
const endTime = Date.now();
var diff = endTime - this._startTime;
this._logFunc(diff + " ms");
}
}
function using(disposable, func) {
const result = func();
disposable.dispose();
return result;
}
以下が利用例です。これで毎回開始時間、終了時間をとって引き算するコードを書かなくて済みます。
using(new ScopedStopwatch(time => console.log("hoge: " + time + " ms")), () => {
// 計測したい処理
});