快速连接nodeJS / JavaScript中的string的方法
我明白,做一些像
var a = "hello"; a += " world";
这是相当慢的,因为浏览器在O(n)
。 没有安装新的库,有没有更快的方法?
这是已知最快的方式在JavaScript中连接string。
有关更多详情,请参阅:
为什么string连接比数组连接更快?
JavaScript:如何将两个数组连接/组合成一个数组?
这个问题已经回答了,但是当我第一次看到它的时候,我想到了NodeJS Buffer。 但是它比+慢,所以在string猜测中没有什么可以比+快。
testing以下代码:
function a(){ var s = "hello"; var p = "world"; s = s + p; return s; } function b(){ var s = new Buffer("hello"); var p = new Buffer("world"); s = Buffer.concat([s,p]); return s; } var times = 100000; var t1 = new Date(); for( var i = 0; i < times; i++){ a(); } var t2 = new Date(); console.log("Normal took: " + (t2-t1) + " ms."); for ( var i = 0; i < times; i++){ b(); } var t3 = new Date(); console.log("Buffer took: " + (t3-t2) + " ms.");
输出:
Normal took: 4 ms. Buffer took: 458 ms.
JavaScript中没有任何其他方式来连接string。
你理论上可以使用.concat()
,但是这比+
慢
库通常比原生JavaScript慢,特别是在string连接或数值操作等基本操作上。
简单地说: +
是最快的。
你问过关于performance。 看这个性能testing,比较'concat','+'和'join' – 简而言之,+运营商赢得了胜利。