我有一个非常大的应用程序,用
TypeScript
编写,使用 Visual Studio Community
,我使用 CLASP
发布。有时,该应用程序的一部分可能运行速度非常慢并导致脚本终止。我正在尝试找出导致这些超时的原因。
我尝试写入日志并在
Executions
中查看结果。
这让我可以看到脚本超时时的位置,但它确实没有突出显示代码的哪些部分正在减慢速度。
我将计时日志放在一起,希望能够跟踪性能问题。
function doSomething() {
let timer = new Timer();
// Do Something
timer.stop();
}
Timer
对象通过解析堆栈自动识别函数并记录起始时间戳。 stop
方法记录结束时间戳并将一行追加到当前电子表格中的 TIMING_LOG
工作表中。
这在小型测试中效果很好,但我很快意识到,仅将一行数据添加到单个工作表中的开销太高了!我无法实时记录每个计时日志。
我更改了
stop
方法,将计时日志数据简单地 push()
放入数组中。 在操作完成之前,我将所有这些日志行添加到 TIMING_LOG
工作表中。
this.LogSheet
.getRange(
this.LogSheet.getLastRow() + 1,
1,
this.mLogLines.length,
this.mLogLines[0].length
)
.setValues(this.mLogLines);
this.mLogLines = [];
这效果出奇的好,但不幸的是,当脚本超时时,日志行不会被附加。
我正在寻找某种信号,告诉我脚本正在终止。就像一个事件,我可以为其添加一个处理程序。 类似...
GoogleAppScript.addEventListener("terminating", handleTermination);