はじめに
Google Apps Script(GAS)で処理時間をLogする関数を作成しました。
処理が重そうな関数を作成する度に処理時間を測定するコードを書いてた過去におさらばです。
関数の実行はコールバック関数(callback)を用いています。
コード
function funcTime(func){
var start = new Date();
var result = func();
var end = new Date();
Logger.log('%s(): %ssec', func.name, (end - start)/1000); // Logの形式はお好みで
return result;
}
使用例
使用例
// 引数がない関数の使用例
funcTime(func1);
// 引数がある関数の使用例
funcTime(func2.bind(this, 2, 1000));
// 戻り値がある関数の使用例
var res = funcTime(func3);
Logger.log(res); // 戻り値をLog
テスト関数
// 引数がない関数
function func1(){
Utilities.sleep(1000);
}
// 引数がある関数
function func2(time1, time2){
Utilities.sleep(time1 * time2);
}
// 戻り値がある関数
function func3(){
return 'func3は戻り値あり';
}
結果
func1(): 1.001sec
(): 2.001sec
func3(): 0.0sec
func3は戻り値あり
引数がある関数を実行した際に関数名(func.name)が取得できないのが微妙ですが、とりあえず動くので良しとしました。
誰かよい方法を知っている方は教えていただけますと幸いです。