GAS性能比其他服务器端JavaScript慢(GAS performance slower tha

2019-06-26 20:43发布

在工作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.5spidermonkey-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 MapAdjust的总结比最慢的竞争对手慢3倍(334 ms和111毫秒)。 的功能采取制图功能的39.2%(2759的1113毫秒)。 我没想到的是,这些职能的工作如此缓慢。 它可以优化它们,例如,使用缓存。 让我们假设优化后,这些功能的执行时间为0毫秒。 在这种情况下,图表功能执行为1646毫秒。

愿望:如果天然气团队可以优化他们的引擎最慢的竞争对手的速度,这是可以预期的是,执行时间缩短至1秒或更少。 也将是巨大的,优化的时间从电子表格获取数据。 据我所知,电子表格不是设计来处理数据的数量较大,但在任何情况下,它会提高整体性能。

Answer 1:

我已经能够复制这样的表现,当我收到他们,我会在这个问题上发布更新。



文章来源: GAS performance slower than other server-side JavaScript