Babel 转码后代码会变慢吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
iugo
V2EX    Javascript

Babel 转码后代码会变慢吗?

  •  
  •   iugo 2018-02-24 18:38:03 +08:00 3359 次点击
    这是一个创建于 2864 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    • 目前在用 Babel. 但一些项目用 TypeScript 后就不用 Babel 了.
    • 根据我自己使用 Node.js 的经验, 没感觉 V8 对新特性在性能上有可感知的优化.

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

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

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

    另外楼主的项目转向 TypeScript 后没有使用 Babel,说明 TS 直出的 ES5 代码满足楼主项目需求,所以在下推断项目复杂度可能不是非常复杂,也应该没有用到 Set/Map/Reflect 之类需要 Polyfill 的特性,对于这样的项目,也许 Babel 层面还不是瓶颈 _(:3 」∠ )_
    LancerComet
        3
    LancerComet  
       2018-02-24 20:09:11 +08:00
    另外补充,如果楼主用的是 preset-env 的话可以试一试 loose 模式,可能 loose 模式下的代码看起来舒服一点吧,速度嘛感觉没啥区别 _(:3 」∠ )_
    misaka19000
        4
    misaka19000  
       2018-02-24 20:10:53 +08:00 via Android
    还没怎么见到过需要提高性能的 js 代码 只要代码别写的太烂基本上都没太多问题 代码一般更看重的是可维护性
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5474 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 07:43 PVG 15:43 LAX 23:43 JFK 02:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86