使用 ES modules 比加载打包构建文件慢

Tags
javascriptwebapp
Created
Jan 10, 2019 1:43 AM

ESM:加载 -> 静态分析依赖 -> 加载 -> 静态分析依赖 … 逐个解析执行

bundle:加载 -> 解析执行

https://medium.com/@giltayar/native-es-modules-ready-for-prime-time-87c64d294d3c

https://bugzilla.mozilla.org/show_bug.cgi?id=1365187#c9 规范算法问题

https://github.com/whatwg/html/pull/2971 规范算法更新

但还是慢,2019-04-16 测试(不开 devtools ,使用隐私模式,modulepreload/module/build):

  • Firefox 66 - 1197/986/64
  • Safari 12.1 - 909/948/64
  • Chrome 73 - 917/637/53

测试:

确定的原因:

  1. 压缩率(单文件压缩率高 3-4 倍)

可能的原因(Firefox Profiler):

  1. 服务端响应不过来(HTTP request and waiting for response)
  2. Native 忙不过来
    • waiting for socket thread,大量
    • waiting for transmit response,大量
  3. 事件循环:处理请求在一个独立的事件循环中进行(__psynch_cvwait)(Chrome DevTools Task)
    • 难道不是多个响应在一个事件循环中处理?
SuperMade with Super