62

次のようなことをしていることを理解しています

var a = "hello";
a += " world";

ブラウザが で行うため、比較的非常に低速ですO(n)。新しいライブラリをインストールせずにこれを行うより速い方法はありますか?

4

2 に答える 2

29

質問はすでに答えられていますが、私が最初にそれを見たとき、私はNodeJSバッファについて考えました。しかし、それは+よりもはるかに遅いので、文字列の包含において+より速くなるものはない可能性があります。

次のコードでテストされています。

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.
于 2012-12-14T00:31:58.840 に答える