在Google Sites
网站上工作,该网站从电子表格中获取数据并动态构建多个图表,我提到Google Apps脚本运行速度非常慢。我通过使用Cache服务来分析代码并对其进行优化。优化后,图表代码大约需要。 3秒(2759毫秒是我见过的最快的时间之一)绘制了11行有127行的图表。这次是将所有数据放入缓存的情况。从电子表格中获取数据并将其放入缓存的第一个执行时间大约为10秒。配置代码在简单的地方需要足够的时间(几十毫秒)。为了测量GAS性能,我编写了一个非常简单的过程,并在GAS环境中,作为已部署的Web应用程序和Caja Playground中执行。我还向GAS问题跟踪器提交了issue。
Eric Koleda合理mentioned,将服务器代码与客户端上运行的代码进行比较是不正确的。我重写了基准代码,结果如下。详情和解释如下。
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|
GAS
- 在GAS引擎上运行包含不同函数执行时间的行。所有时间都以毫秒为单位。 GAS执行时间在很大范围内漂移。在表中是我在5-10次执行中遇到的最快的时间。我见过的最差Complete
时间是1194毫秒。源代码为here。结果为here。rhino-1.6.5
和spidermonkey-1.7
- 行包含与GAS
相同功能的执行时间,但使用ideone.com在相应的Javascript引擎上执行。这些引擎的代码和时间为here和here。基准代码包含一些功能。
List To Map [listToMap]
- 将对象列表转换为具有复合键的映射的函数。它来自站点脚本,需要大约。图表代码的9.2%(256/2559毫秒)。Adjust [adjustData_]
- 一个函数,它将矩阵中的所有日期列转换为预定义格式的文本,转置它并将行从[[[a], [1]], [[b], [2]]]
形式转换为[[a, 1], [b, 2]]
形式。它也取自脚本并消耗约。 30.7%(2759毫秒中的857)。Sort
- 一个标准Array.sort
函数,它包含在测试中,以查看标准函数的工作速度。Quick Sort [quick_sort]
- 快速排序功能here。它被添加到基准测试中以与Array.sort
函数执行时间进行比较。Complete [test]
- 一个功能,包括函数调用,准备测试数据和上述功能。这一次不是原始时间的总结。 结论: GAS功能执行时间漂移。 GAS Complete
功能比最慢的竞争对手慢<1.6> 。 GAS标准Array.sort
功能比其他两个引擎中最慢的功能慢<4> 。摘要中的服务List To Map
和Adjust
比最慢的竞争对手 3 慢(334 ms vs 111 ms)。这些函数占图表函数的39.2%(1159,即2759毫秒)。我没想到这些功能运行得如此之慢。例如,可以使用缓存来优化它们。假设在优化之后,这些函数的执行时间将为0 ms。在这种情况下,图表功能执行是1646毫秒。
愿望:如果GAS团队可以将他们的引擎优化到最慢的竞争对手的速度,则可以预期执行时间减少到1秒或更短。此外,优化从电子表格中获取数据的时间也很棒。我知道电子表格不是为处理大量数据而设计的,但无论如何,它都会提高整体性能。
答案 0 :(得分:1)
我已经能够复制这个表现了,我会在收到这个问题后发布更新。