[]+[]和[].join(',')+[].join(',')之间的性能差异

3

在研究数组时,我发现以下三个语句之间存在显著的差异:

为什么会有这样的差异呢?

[1,2]+[3,4];

[1,2].toString()+[3,4].toString();

[1,2].join(',')+[3,4].join(',');

输入图像描述 如果 [1,2]+[1,2] 的表现与将其转换为字符串然后连接两个字符串相同,那么它们的性能不应该有些相似吗?

这个问题的灵感来自于这个答案


3
因为你告诉 JavaScript 引擎将其转换为一个字符串,具有比包含任何对象的通用数组更快的运算符。 - abc123
在所有情况下,每个操作大约只需要一微秒或更少的时间。这有什么区别呢?无论如何,这可能因JavaScript平台而异。 - Pointy
顺便问一下,我很好奇没有冗余参数“,”的.join()方法如何比较。 - Patrick Roberts
@abc123..太快了 :) - Naeem Shaikh
@PatrickRoberts.. 看起来它成为了最快的。 - Naeem Shaikh
1个回答

4

这可能与隐式和显式转换有关。

对于 [1,2]+[3,4],解释器需要自己确定输出为 string

对于 [1,2].toString()+[3,4].toString();[1,2].join(',')+[3,4].join(',');,你已经告诉了解释器它正在使用字符串。

最后两行之间的差异基本可以忽略不计。

最终,即使您这样做一百万次,您也不会真正注意到任何区别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接