为什么我的 Google App 脚本会随着时间的推移而变慢?

Da *_* Ni 0 javascript performance google-sheets google-apps-script

我构建了一个脚本来详细说明谷歌表格并将其提取到云端硬盘文件夹中。为了创建它的脚本,我遵循了最佳实践。我注意到,随着时间的推移,执行速度变慢,我不明白为什么有时比其他人更快。

我尝试使用较小的脚本 --> 只是 1 getValues(),仅在代码内部完全详细说明数组的数组,最后使用 1 setValues() 将数据绘制到工作表中 --> 这些类型的脚本不会随着时间的推移,速度会减慢。我想要了解的是,除了代码质量之外,其他方面是否会影响 GAS 执行的速度

Rub*_*bén 5

除了TheMaster 提到的之外,随着时间的推移,其他可能会减慢电子表格速度的事情是增加

  • 使用now()today()rand()、 等易失性函数的公式randbetween()
  • 使用将电子表格连接到其他内容(例如导入函数GOOGLEFINANCE等)的函数的公式。
  • “慢”函数如SUMPRODUCT, MMULT
  • 具有开放引用的公式不使用,ARRAY_CONSTRAIN因为它们将返回空白行和列,这可能会使每次计算添加新的行和列。

  • 随着时间的推移而增长的长公式链,就像=A1 + 1并以某种方式沿许多行进行“填充”,因此电子表格以=A2 + 1, =A3 + 1,...结尾=A10000 + 1。首先计算=A10000 + 1应该计算第一个公式,然后计算第二个公式,依此类推。
  • 链接到开放范围或使用上述公式的电子表格功能,例如数据验证、条件格式、图表、数据透视表等。

关于一次执行与另一次执行之间的差异,除了 IDE - 服务器通信等常规云计算因素之外,Google Apps 脚本可能会使用某种“预热”和/或捕获,这意味着“第一次”执行可能需要比另一方面,下一个脚本依赖于 Google Cloud 项目。未使用的脚本上的默认 Google Cloud 项目将被删除,并在再次使用脚本时添加新项目。我不知道对脚本性能的影响有多大,但这是一项并非一直执行的操作。


您可能想要专门了解代码气味技术债务以及更广泛的软件工程

使用 SpreadsheetApp 类的 Google Apps 脚本代码的性能受数据、数据验证、条件格式、公式和其他功能的影响。它还可能受到环境和本地环境的影响。

就云环境而言,我指的是 Google 数据中心、互联网和您的 ISP。根据本地网络和计算机的本地情况。

如果您的计算机使用依赖于用户界面的方法,则可能会影响脚本性能,因为重新计算会强制 UI 刷新,并且某些方法可能会导致电子表格重新加载,例如更改电子表格时区或区域设置。

姊妹网站软件工程有代码气味技术债务的标签:

参考