Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script GAS性能比其他服务器端JavaScript慢_Google Apps Script - Fatal编程技术网

Google apps script GAS性能比其他服务器端JavaScript慢

Google apps script GAS性能比其他服务器端JavaScript慢,google-apps-script,Google Apps Script,在一个Google站点站点上工作,该站点从电子表格中获取数据并动态构建多个图表,我提到googleapps脚本的工作速度非常慢。在可能的情况下,我通过使用服务对代码进行了分析和优化。优化后,绘制代码大约需要3秒(2759毫秒是我见过的最快的时间之一),才能绘制出包含127行的11个图表。这一次是针对所有数据都放在缓存中的情况。第一次执行时间约为10秒,从电子表格中获取数据并将其放入缓存。在简单的地方,分析代码需要足够的时间(几十毫秒)。为了测量GAS性能,我编写了一个非常简单的过程,并在GAS环

在一个
Google站点
站点上工作,该站点从电子表格中获取数据并动态构建多个图表,我提到googleapps脚本的工作速度非常慢。在可能的情况下,我通过使用服务对代码进行了分析和优化。优化后,绘制代码大约需要3秒(2759毫秒是我见过的最快的时间之一),才能绘制出包含127行的11个图表。这一次是针对所有数据都放在缓存中的情况。第一次执行时间约为10秒,从电子表格中获取数据并将其放入缓存。在简单的地方,分析代码需要足够的时间(几十毫秒)。为了测量GAS性能,我编写了一个非常简单的过程,并在GAS环境中、作为部署的web应用程序和中执行它。我还向气体问题追踪者提交了一份报告

合理地说,将服务器代码与客户端上运行的代码进行比较是不正确的。我重写了基准代码,下面是结果。详情及解释如下

Engine |List To Map|Adjust|Quick Sort|Sort|Complete| GAS | 138| 196| 155| 38| 570| rhino-1.6.5 | 67| 44| 31| 9| 346| spidermonkey-1.7| 40| 36| 11| 5| 104| 引擎|要映射的列表|调整|快速排序|排序|完成| 天然气| 138 | 196 | 155 | 38 | 570| rhino-1.6.5 | 67 | 44 | 31 | 9 | 346| spidermonkey-1.7 | 40 | 36 | 11 | 5 | 104|
  • GAS
    -包含燃气发动机上运行的不同功能的执行时间的行。所有时间均以毫秒为单位。气体执行时间在相当大的范围内漂移。表中是我在5-10次执行中最快的时间。我所看到的最糟糕的
    完成时间是1194毫秒。源代码是。结果是
  • rhino-1.6.5
    spidermonkey-1.7
    -行包含与
    GAS
    相同的函数的执行时间,但使用相应的Javascript引擎执行。这些发动机的代码和时间为和
基准代码包含几个函数

  • 列表到映射[listToMap]
    -将对象列表转换为具有复合键的映射的函数。它取自站点脚本,约占图表代码的9.2%(2759毫秒中的256毫秒)
  • Adjust[adjustData][ucode>-一个函数,它将矩阵中的所有日期列转换为预定义格式的文本,将其转换,并将行从
    [[a],[1],[[b],[2]]]
    表单转换为
    [[a,1],[b,2]
    表单。它也取自脚本,消耗约30.7%(2759毫秒中的857毫秒)
  • Sort
    -一个标准的
    数组。Sort
    函数,包括在测试中,以查看标准函数的运行速度
  • 快速排序[Quick\u Sort]
    -采用快速排序功能。它被添加到基准中,以与
    数组.sort
    函数执行时间进行比较
  • Complete[test]
    -一个函数,包括函数调用、准备测试数据和上述函数。此时间不是原始数据中的时间摘要
结论:气体功能执行时间漂移。GAS
Complete
功能的运行速度比最慢的竞争对手慢1.6倍。气体标准
Array.sort
功能比其他两台发动机中速度最慢的发动机慢4倍。总而言之,要映射的服务<代码>列表<代码>和<代码>调整<代码>要比速度最慢的竞争对手慢3倍(334 ms vs 111 ms)。这些函数占图表函数的39.2%(2759毫秒中的1113毫秒)。我没想到这些功能工作得这么慢。例如,可以使用缓存对它们进行优化。假设优化后,这些函数的执行时间为0毫秒。在这种情况下,图表函数的执行时间为1646毫秒


愿望:如果燃气团队能够将发动机优化到最慢的竞争对手的速度,那么执行时间可能会缩短到1秒或更短。另外,优化从电子表格中获取数据的时间也很好。我知道电子表格不是为处理大量数据而设计的,但在任何情况下,它都会提高整体性能。

我已经能够复制这种性能,我会在收到它们时发布有关该问题的更新。

您是否多次运行TET?结果是否持续?根据我的经验,执行时间是高度可变的,取决于不可控制的,而且可能是多个parameters@Sergeinsas,当然,我多次执行了这两个脚本。气体执行时间为8秒及以上。Caja脚本执行时间约为5毫秒@Sergeinsas。是部署的GAS脚本。谢谢,但我已经部署了它。。。我读取的值介于8到15秒之间;-)。让我高兴的是,它似乎是线性的。。。将循环减少到500000需要一半的时间。我很好奇如果谷歌团队成员这样做了,他们会说什么/解释什么。@Sergeinsas,让我们等待气体支持团队的回答,如果他们这样做的话。:)埃里克,非常感谢你。我已经阅读了问题追踪者的答案。我同意比较Caja(客户端)和服务器脚本是不正确的。我移植了我最初的“基准”脚本,以便在服务器上运行它。结果适用于
spidermonkey-1.7
发动机和
rhino-1.6.5
发动机。我还创建了更多真实的示例-快速排序。结果是,()。继续…伟大的研究和更好的比较。看起来Apps脚本在那些快速排序测试中更具可比性,但仍然不是很好。现在我正在优化我的脚本,以消除非常明显的瓶颈,并讨论性能,不是理论上的,而是使用真实的脚本。我更新了我的原始帖子。现在,我认为,这更接近现实。