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

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

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

【问题讨论】:

    标签: google-apps-script google-analytics google-sheets profiling google-analytics-api


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

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

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

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

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

      参考文献

      【讨论】:

        【解决方案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 的服务器上。
        猜你喜欢
        • 1970-01-01
        • 2019-05-18
        • 1970-01-01
        • 2016-02-07
        • 1970-01-01
        • 2021-11-22
        • 2012-02-12
        • 2011-03-03
        • 1970-01-01
        相关资源
        最近更新 更多