Babel 转码后代码会变慢吗?

2018-02-24 18:38:03 +08:00
 iugo

标题多多少少不严谨, 也可以这样问:

JavaScript 引擎对 ECMAScript 2015 及以上特性的支持有多大程度的性能优化?

不同 JavaScript 引擎的效果可能不一样, 比如 SpiderMonkey 和 V8 各有侧重.

所以不知道有没有一个服务, 对主流的 JavaScript 引擎和常见的 ECMAScript 2015 及以上特性做性能对比.

虽说 ECMAScript 2015 及之后都可以看作是语法糖, 但我相信 JavaScript 引擎和 Babel 对此的态度可完全不同. 只是不知道是否有值得一提的性能提升(比如某语法特性速度快 10% 这样).

3132 次点击
所在节点    JavaScript
4 条回复
noe132
2018-02-24 19:50:44 +08:00
应该是会变慢的。
对于一般 web 项目基本影响可以忽略。
不过引擎支持总比 polyfill 看的顺眼。可能有实现方式上的优化。
像 async generator 这东西翻译之后可谓是相当的复杂
LancerComet
2018-02-24 20:07:08 +08:00
大多数 Polyfill 都有 Native 支持检测,在下认为在浏览器支持的情况下,检测代码不会有值得一提的性能降低(但有些检测方式可能会让楼主觉得太长,比如 CoreJS 里的那些)

不过转换后的代码多多少少复杂度是上升的,按道理说是会减慢速度(一般都认为是初始化速度吧),但对于大多数产品来讲应该是可以接受的(问题还不到这个层面)

另外楼主的项目转向 TypeScript 后没有使用 Babel,说明 TS 直出的 ES5 代码满足楼主项目需求,所以在下推断项目复杂度可能不是非常复杂,也应该没有用到 Set/Map/Reflect 之类需要 Polyfill 的特性,对于这样的项目,也许 Babel 层面还不是瓶颈 _(:3 」∠ ❀)_
LancerComet
2018-02-24 20:09:11 +08:00
另外补充,如果楼主用的是 preset-env 的话可以试一试 loose 模式,可能 loose 模式下的代码看起来舒服一点吧,速度嘛感觉没啥区别 _(:3 」∠ ❀)_
misaka19000
2018-02-24 20:10:53 +08:00
还没怎么见到过需要提高性能的 js 代码 只要代码别写的太烂基本上都没太多问题 代码一般更看重的是可维护性

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/432315

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX