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