在工作Google Sites
的网站,从电子表格中动态获取数据,并建立多个图表,我提到了谷歌Apps脚本作品相当缓慢。 我异形的代码和优化它,通过使用高速缓存服务,在那里它是可能的。 优化后的图表代码大约需要。 3秒(2759毫秒是最快的时间,这是我所见过的一个)来绘制有127列11点的图表。 而这一次是针对情况下,当所有的数据都放在到缓存中。 第一届执行时间,从电子表格中获取数据,并将它们放置到缓存中,大约10秒。 所需的异型代码足够长的时间(几毫秒)在简单的地方。 测量气体的表现,我写了一个非常简单的过程,并在气体环境中执行它,部署Web应用程序,并在卡哈游乐场 。 此外,我提交了一个问题 ,以天然气问题跟踪器。
埃里克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
-含不同的功能的执行时间的行运行在燃气发动机。 所有的时间以毫秒为单位。 气体执行时间漂移在相当宽的范围。 在该表是最快速的时代,我在5-10个执行过死刑。 最糟糕的Complete
时间,这是我所看到的,是1194毫秒。 源代码是在这里 。 其结果是在这里 。 -
rhino-1.6.5
和spidermonkey-1.7
-行包含的相同的功能,执行时间GAS
但使用通讯员JavaScript引擎执行ideone.com 。 这些引擎的代码和时间是在这里和这里 。
基准代码包含的一些功能。
-
List To Map [listToMap]
-其中对象的列表转换为具有复合键的映射的函数。 它是从现场拍摄脚本和需要约。 9.2%的图表代码(2759的256毫秒)。 -
Adjust [adjustData_]
-其将所有日期列以矩阵到一个文本在预定义的格式的功能,转置,并从转换的行的[[[a], [1]], [[b], [2]]]
形式向[[a, 1], [b, 2]]
之一。 这也是从剧本和拍摄大约消耗。 30.7%(2759的857毫秒)。 -
Sort
-一个标准Array.sort
功能,它包含的测试,看看如何快速的工作标准功能。 -
Quick Sort [quick_sort]
-采取了快速排序功能在这里 。 它被添加到基准与比较Array.sort
函数的执行时间。 -
Complete [test]
-的函数,其中包括的函数的调用,准备测试数据,以及上面提到的功能。 这一次是不是在生的时候总结。
结论:GAS功能执行时间漂移。 燃气Complete
功能的工作原理比最慢的竞争对手慢1.6倍。 气体标准Array.sort
函数比最慢的其他两个引擎慢4倍。 该服务List To Map
和Adjust
的总结比最慢的竞争对手慢3倍(334 ms和111毫秒)。 的功能采取制图功能的39.2%(2759的1113毫秒)。 我没想到的是,这些职能的工作如此缓慢。 它可以优化它们,例如,使用缓存。 让我们假设优化后,这些功能的执行时间为0毫秒。 在这种情况下,图表功能执行为1646毫秒。
愿望:如果天然气团队可以优化他们的引擎最慢的竞争对手的速度,这是可以预期的是,执行时间缩短至1秒或更少。 也将是巨大的,优化的时间从电子表格获取数据。 据我所知,电子表格不是设计来处理数据的数量较大,但在任何情况下,它会提高整体性能。