gpt4 book ai didi

javascript - ES6 模板文字是否比字符串连接更快?

转载 作者:IT王子 更新时间:2023-10-29 02:53:25 25 4
gpt4 key购买 nike

在 ES6 中使用字符串连接或模板文字时,HTML 代码生成在现代浏览器中的运行速度是否显着加快?

例如:

字符串连接

"<body>"+
"<article>"+
"<time datetime='" + date.toISOString() +"'>"+ date +"</time>"+
"</article>"+
"</body>"

模板文字

`<body>
<article>
<time datetime='${ date.toISOString() }'>${ date }</time>
</article>
</body>`

最佳答案

目前看来字符串连接速度更快:http://jsperf.com/es6-string-literals-vs-string-concatenation

ES6 with variable                     19,992,512    ±5.21%    78% slower
String concatenation with variable 89,791,408 ±2.15% fastest
ES6 with function 461,358 ±3.12% 99% slower
String concatenation with function 503,255 ±1.77% 99% slower

我测试的是在 Chrome 43.0.2334.0 canary(64 位)上运行,它使用 V8 4.3.31,启用了 #enable-javascript-harmony 标志。

作为引用,Node.js 的最新版本(撰写本文时为 0.12.0)使用的是 V8 3.28.73:https://raw.githubusercontent.com/joyent/node/master/ChangeLog

我确信所有可能应用的性能优化尚未应用,因此随着 ES6 接近最终定稿并且这些功能被迁移到稳定分支,期望性能会变得更好是合理的。


编辑:感谢 @user1329482、@icl7126、Nicolai Borisik 和 FesterCluck 的评论。自问这个问题以来已经过去了大约 2 年,ES6 浏览器支持大大增加,并且进行了大量的性能优化。这里有一些更新

编辑:(2020 年 2 月)根据@JorgeFuentesGonzález 评论和后续确认更新了 Chrome 结果

在 Chrome 中(截至 59.0.3035),ES6 字符串字面量更快:

ES6 with variable                     48,161,401       ±1.07%    fastest
String concatenation with variable 27,046,298 ±0.48% 44% slower
ES6 with function 820,441 ±1.10% 98% slower
String concatenation with function 807,088 ±1.08% 98% slower

更新:在 Chrome 中(自 79.0.3945 起),字符串连接速度更快...查看评论。

在 Firefox 中(从 57.0.0 开始),ES6 字符串字面量更快:

ES6 with variable                     1,924,610,984    ±0.50%    fastest
String concatenation with variable 1,876,993,458 ±0.79% 3% slower
ES6 with function 539,762 ±5.04% 100% slower
String concatenation with function 546,030 ±5.88% 100% slower

在 Safari 中(从 11.0.2 开始),这取决于:

ES6 with variable                     1,382,752,744    ±0.71%    fastest
String concatenation with variable 1,355,512,037 ±0.70% 2% slower
ES6 with function 876,516 ±1.01% 100% slower
String concatenation with function 883,370 ±0.79% 100% slower

使用类型转换字符串时,ES6 字符串字面量更快。但是,在本示例中,当从文字调用函数时,字符串连接速度更快

如果您真的想深入了解并需要榨取 Safari 的每一滴性能,我建议设置测试,看看是否/如何在文字效果性能中输入错误的变量和多个引用。

关于javascript - ES6 模板文字是否比字符串连接更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29055518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com