当前位置: 首页 > 面试题库 >

ES6模板文字比字符串连接快吗?

洪逸清
2023-03-14
问题内容

在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

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

作为参考,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中压缩每一次性能下降,我建议您设置测试以查看是否/如何在字面效果性能内错误键入变量和多个引用。



 类似资料:
  • ES6引入了一种通过反引号( ` )标记的新的字符串文字类型。 这些字符串文字可以包括换行符,并且有一个新的机制用于将变量插入字符串:

  • 问题内容: 我有以下Ecma-Script-6代码 输出如下: 和 我已经能够在此处将字符串串联起来,那么使用模板文字的情形将是什么? 问题答案: 如果像问题示例中那样仅将模板文字与占位符(例如)一起使用,则结果与串联字符串相同。从主观上讲,它看起来更好并且更易于阅读,尤其是对于多行字符串或包含这两者的字符串,因为您不必再​​转义那些字符了。 可读性是一个很棒的功能,但是关于模板最有趣的是Tagg

  • 我有以下ECMAScript 6模板文字的代码: 输出如下所示: 这是小提琴。 我试图寻找确切的区别,但我找不到,以下两种说法有什么区别? 和 我已经能够在这里获得与< code>person.name连接的字符串< code>MyVar,那么在什么场景中使用模板文字呢?

  • 链接: https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/es6/create-strings-using-template-literals 问题:< br >使用带反斜杠的模板文字语法创建列表元素(li)字符串数组。每个列表元素的文本应该是result对象的failure属性中的数组元素之一

  • 问题内容: 我可以猜测浏览器已针对最新版本进行了优化,但是如何做到这一点呢?我们可以说串联字符串时最好使用吗? 更新资料 因此,在现代浏览器中,对字符串串联进行了优化,因此使用符号比要 串联 字符串时使用符号要快。 但是@Arthur指出,如果您实际上想使用分隔符连接字符串,则速度会更快。 问题答案: 浏览器字符串优化已更改了字符串串联图片。 Firefox是第一个优化字符串连接的浏览器。从1.0

  • 本文向大家介绍深入浅出es6模板字符串,包括了深入浅出es6模板字符串的使用技巧和注意事项,需要的朋友参考一下 本文主要介绍了深入浅出es6模板字符串,分享给大家,具体如下 作为前端开发者避免不了根据后台数据的返回,组装html,渲染页面。举个栗子 有时候还要给标签加一些属性,写起来很不方便,es6提供了模板字符串的方法,简化了这一过程 所有模板字符串的空格和换行,都是被保留的,如果你不想要前后换