これなのですが....

同じ文字列のn回繰り返しを作る最速の方法を探求してみた - muddy brown thang
ちょっとした事情により、ある文字列のn回繰り返しを作る関数 (PHPでいうところのarray_repeat(), Perlで言うところの「"..." x n」、RubyやPythonで言うところの「"..." * n」) を高速に実装しなければならない状況に遭遇したのでベンチマークをとってみたところ、その結果がとても新鮮で驚いたので、これを共有しつつもダメ出ししてもらえないかなーと思って晒してみることに。

なぜかもっとシンプルな奴がなかったので。

以下、比較。初期値はIEにあわせてあります。Firefox/Safari/Opera/Chromeでは桁を2つほど増やしてみてください。

str =  n =

Naive

function (str, n){
    var result = '';
    for (var i = 0; i < n; i++) result += str;
    return result;
};

log n

function (str, n){
    var result = '';
    for(n *= 1; n > 0; n >>>= 1, str += str) if (n & 1) result += str;
    return result;
}

アルゴリズムは、実は

と同様です。

どのブラウザでもご利益がありますが、特にIEだと多大なご利益があります。"てってってー" x 10000 程度でも60倍近い速度差が出ました。驚異的なのがChromeで、1000000、すなわち100万回でも log n アルゴリズムは 0 msでした。

Enjoy!

Dan the Algorithmic JavaScripter