为何babel-cli编译后的ES模块运行速度比babel-node慢约50%?
编译后运行速度反低于babel-node的问题排查
问题背景
- 项目基于JavaScript开发Express服务,开发阶段一直使用
babel-node对代码实时编译转译运行。 - 异常现象:使用
babel-cli完成项目代码编译后开展基准压测,编译产物的运行速度比babel-node实时转译模式慢约50%,压测工具为wrk。 - 预期偏差:原本预期编译后的代码运行速度会更快,怀疑是Babel配置或使用流程存在问题。
项目当前Babel配置
.babelrc配置内容如下:
{ "presets": ["@babel/preset-env"], "plugins": [ "@babel/plugin-proposal-class-properties", "@babel/plugin-transform-runtime" ] }
压测实测数据
两组测试共重复开展数十轮,结果波动范围均在*±5%*以内,结论稳定。
babel-node模式压测结果
kenny@kenny-Swift:~/Desktop/projects/wrk$ ./wrk -c400 -d30s -t4 http://127.0.0.1:4000/graphql Running 30s test @ http://127.0.0.1:4000/graphql 4 threads and 400 connections Thread Stats Avg Stdev Max +/- Stdev Latency 84.13ms 18.85ms 217.29ms 86.26% Req/Sec 1.19k 239.36 1.61k 73.75% 142627 requests in 30.04s, 35.91MB read Non-2xx or 3xx responses: 142627 Requests/sec: 4747.58 Transfer/sec: 1.20MB
babel-cli编译产物运行模式压测结果
kenny@kenny-Swift:~/Desktop/projects/wrk$ ./wrk -c400 -d30s -t4 http://127.0.0.1:4000/graphql Running 30s test @ http://127.0.0.1:4000/graphql 4 threads and 400 connections Thread Stats Avg Stdev Max +/- Stdev Latency 157.59ms 26.42ms 311.14ms 88.96% Req/Sec 636.02 147.04 1.01k 72.50% 76012 requests in 30.06s, 20.80MB read Non-2xx or 3xx responses: 76012 Requests/sec: 2529.01 Transfer/sec: 708.82KB
内容的提问来源于stack exchange,提问作者Emre Badem
相关产品推荐
相关产品推荐

