见见

从 Node 6 升级到 Node 8:实时性能比较

见见 · 2017-06-10翻译 · 460阅读 原文链接

Node 8 已经出来了,你听说了么?而且他们说,它更快。

但是没有任何数据,“更快”都空口无凭。

幸运的是,我有一个大型的 React 站点运行在 Node 6 上,并且有两个小时的空闲。

升级到 Node 8 很简单,花了大概 10 分钟,没有一个不能正常运行的库。我在 macOS 上安装了网站上的 pkg 文件,而且相对顺利。虽然我确实需要手动删除 usr/local/lib/node_modules/

一切都很好,当时我稍后会在 Windows 机器上尝试一下,可能需要四天的时间。

编辑:天呐,它在 Windows 上也像个魔法。没有手动步骤,没有破损的软件包,没有一个早在不久前就需要白色的混乱

网站

这些性能比较适用于具有单页的中到大型的 React 站点。在服务器上,它需要一个具有数千个属性的 JSON 对象,并返回具有 2113 个 DOM 节点的 HTML 。

是的,对多的 DOM 节点了,是的,在手机上需要两秒来解析它,但可惜的是,我在这个链上做了太多的事情,哦,其中一半是隐藏的,只为了 SEO,甚至不让我开始。)


让时间考验开始吧。

服务器渲染时间

让我们从最重要的指标开始,即页面的服务器呈现所需的时间。

时间是运行在一个相当打的银色笔记本电脑上的,我认为有几赫兹的嗡嗡声,macOS Sierra 系统。

乍一看,半不是巨大的差异,但是在第八次运行之后,渲染时间就会下降,而 Node 6 大约 104ms 完成工作,Node 8 大约需要 80ms。

渲染时间缩短了 23%,哦这更具体地说,为站点提供的硬件减少了 23%。

我要向我的雇主建议我们升级到 Node 8,将我们的 Amazon 实例从 25 个减少到 20个,并将第一个月的积蓄捐赠给 Node.js Foundation。

因为我喜欢笑声。


这是同样的测试,但在开发模式下使用 React:

经过最初几次运行,平均减少了大约 31%。这张图真的只是在这里提醒人们,把 NODE_ENV 设置为 production 并运行生产库版本很重要。


我不确定这个性能提升来自哪里。我估计很大程度上是从 V8 5.8 版本中获益。如果你对这一切有兴趣的话,这里有一个很棒的视频

运行测试套件

这套约 500 个 Jest 测试主要涉及及安装和卸载 React 组件,显然只是一般的 JavaScriptery

减少 10%。也许这里的改进不那么明显,因为 JavaScript 引擎没有进行任何优化(每次运行都是起新的 Node)。这只是猜测,更正/解释是受欢迎的。

Webpack 构建

Webpack 构建是一些磁盘 I/O,一堆 Babel transpiling,JS uglifying/minifying,大约 500 KB 的 JavaScript。

对这个没什么好说的,运行时间减少 7%。

NPM 安装

现在切换到 Windows,最常用的 NPM 操作系统。硬件是一个大的矩形机,黑色的麂皮内饰和更多的霓虹灯。

package.json 中有 40 个包, 445 个包都在依赖关系树中。

对于第一组数字,我删除了 npm 缓存和我的项目的 node_modules 目录,所以测试是通过互联网抓取包。

有趣的是,NPM 3 以 7Mbps 的速度下载,NPM 5 达到 20Mbps。

我使用了 yarn

至于写给这个消息的人呢?

…你有一点点笑出来了。这是一个紧张的笑声,因为我不知道我在做什么,但是 Marcel Marceau 曾说过


接下来,我用 npm 缓存启动 npm install,每次运行之前都删除了 node_modules。我认为这主要是磁盘 I/O(从缓存复制到项目目录),但显然这比它更重要,正如时间的显著改善。

在这两种情况下,NPM 5 大约三分之一的安装时间。在这两种情况下,Yarn 明显更快(不值得为我的需要而转换,但是对每个人来说都是这样)。


这是我所有的图表。

说实话,我预计 Node 8 可能会有几个百分点的提高,如果没有转化成现实世界,那么这个数字并不惊讶。但是剔除了四分之一的服务器渲染时间和三分之一的 NPM 安装时间是惊人的。

做得好,每个人都参与了。

相关文章