我正在读这本书-面向Web开发人员的专业Javascript,其中作者提到,与使用数组存储字符串然后使用join方法创建最终字符串相比,字符串连接是一种开销很大的操作。出于好奇,我在这里做了几个测试,看看它能节省多少时间,这是我得到的-
http://jsbin.com/ivako
不知何故,Firefox通常会产生与这两种方式相似的时间,但在IE中,字符串连接要快得多。那么,这个想法现在可以被认为过时了吗(浏览器可能已经改进了?
发布于 2009-09-03 00:34:32
**编辑:我假设人们还在看这篇文章--但它已经3+多年了,所以为了你的最大利益,你可以直接查看:http://jsperf.com/string-concatenation/14
查看这篇文章的变化,看看它以前是怎么说的。
发布于 2009-09-03 00:23:49
即使它是真的并且join()比连接更快,这也无关紧要。我们在这里讨论的毫秒数是完全可以忽略的。
我总是喜欢结构良好和易于阅读的代码,而不是微观的性能提升,我认为使用连接看起来更好,更容易阅读。
这只是我的两个观点。
发布于 2009-09-03 01:29:43
在我的系统上(Windows7中的IE 8),StringBuilder在该测试中的时间范围约为70%-100% --也就是说,它不稳定--尽管平均值约为正常追加的95%。
虽然现在很容易说“过早优化”(我怀疑几乎在所有情况下都是),但还是有一些事情值得考虑:
重复字符串连接的问题来自重复的内存分配和重复的数据复制(高级字符串数据类型可以减少/消除很多这样的问题,但现在让我们继续假设一个简单的模型)。因此,让我们提出一些问题:
尽管,老实说,对于任何形式的正常字符串构建,我只会使用普通的字符串连接,直到这样的时候,它被确定为瓶颈。
我会重新读一遍书中的上面这句话,看看作者是否真的有其他隐含的考虑因素,比如“对于非常大的字符串”,或者“大量的字符串操作”,或者“在JScript/IE6中”等等。如果不是,那么这样的语句就像"Insert sort is O(n*n)“一样有用。实现成本取决于数据的状态和n的大小。
免责声明:代码的速度取决于浏览器、操作系统、底层硬件、月球引力,当然还有你的电脑对你的感觉。
https://stackoverflow.com/questions/1370830
复制相似问题