分析 Google 应用脚本的性能

Posted

技术标签:

【中文标题】分析 Google 应用脚本的性能【英文标题】:Profiling the Performance of a Google App Script 【发布时间】:2013-12-30 19:26:21 【问题描述】:

我编写了一个 Google 应用脚本来将 Google Analytics(分析)数据提取到 Google 电子表格中。这是一个相当长的运行脚本,它向 GA Reporting API 发出多个请求,它还使用 Google App 的 ScriptDB。

是否有一种分析脚本性能每个步骤的好方法,以便我可以确定哪些区域花费的时间最长,从而可以开始在某些区域进行优化?

【问题讨论】:

【参考方案1】:

作为对 Fred 答案的补充,在脚本顶部定义一个变量 start

var start = new Date().getTime();

然后在几个Logger.log()放置一个战略点使用

Logger.log(new Date().getTime()-start);

你会很好地了解正在发生的事情......

【讨论】:

【参考方案2】:

执行记录对这种事情非常有用。

您还可以将Logger.log() 语句放在所有地方,以测量自上次日志以来的时间。这样您就可以找到执行时间较长的区域。

我有一个spreadsheet,我在其中复制执行后的日志,然后公式 + 条件格式帮助我识别速度较慢的区域。

【讨论】:

请按原样考虑我的回答:关于 Logger 方法的简单补充。您使用 SS 的解决方案当然更方便,尽管设置起来有点复杂。顺便说一句,我投了赞成票:-) 天哪,我什至不知道“执行记录”!惊人的酱汁!你制作的那个小电子表格也很棒!它可以快速帮助我识别减速。谢谢!【参考方案3】:

基本工具是execution transcript 和Class Logger(在之前的答案中提到)

现在我们可以使用Stackdriver logging 和包含console.time 和console.timeEnd 的类控制台。

为了让事情变得更好,我们还可以通过 BigQuery 将 Stackdriver 日志记录发送到 Google Data Studio,这样我们就可以构建有用的指标来跟踪分析数据。

参考文献

Stackdriver Logging for Google Apps Script is now available Identify and understand errors in Apps Script with Stackdriver

【讨论】:

【参考方案4】:

要纠正 Serge 的回答,即调用 Date 函数有问题,您可以使用此解决方案。

function myFunction() 
  var start_time = new Date().getTime();
  /*
  your code goes here
  */
  Logger.log('Total execution time is :' + (new Date().getTime()-start_time) + ' ms');

您可以用您的代码替换注释行。执行后按 Ctrl + Enter 或 Command ⌘ + Enter 在 Mac 上查看日志。你会得到类似下面的东西:

[17-01-18 12:25:58:932 UTC] 总执行时间为:16586 ms

所以这里的总执行时间是 16586 毫秒,也就是 16.586 秒。

除了上述之外,您还可以在代码之间添加以下 sn-p 以测量不同部分的执行时间。

Logger.log('Execution time till checkpoint 1:' + (new Date().getTime()-start_time) + ' ms');

【讨论】:

Serge's answer 有什么问题需要纠正? 您使用与 Serge 的完全相同的 Date 函数调用【参考方案5】:

您可能应该使用console.time(label)console.timeEnd(label) 方法,因为使用Date 时可能会得到否定结果。

【讨论】:

我没有看到在 Google Apps 脚本服务器端代码上使用 Date 时产生负面结果的报告。你见过吗? 不,我也没有看到,但我更多地谈论的是现实世界的时钟可能会同步的一般问题,因此产生的差异会变成负数。虽然我怀疑这会发生在 Google 的服务器上。

以上是关于分析 Google 应用脚本的性能的主要内容,如果未能解决你的问题,请参考以下文章

Google Chrome 中常规和性能分析器模式之间的区别

Google PageSpeed Tools 性能测试分析

通过配置变量包含Google的gtag分析

google perftools分析程序性能

通过本地加载ga.js文件提高Google Anlytics性能

nginx性能优化调优之google-perftools