文字列連結
function randStr(len){ var str =""; for(var i=0;i<len;i++){ str += String.fromCharCode(Math.floor(Math.random()*93)+33); } return str; } var total=0; var start,end; var str = ""; var tempStr = ""; for(var i=0;i<100000;i++){ tempStr = randStr(25); start = new Date().getTime(); str += tempStr; end = new Date().getTime(); total += (end - start); } print(total); //alert(total);
opt -1:59350
opt 0:60080
opt 1:58732.5
opt 4:596150
opt 9:58700
高速版
//http://d.hatena.ne.jp/shogo4405/20070125/1169713463 function FString(){ var k = -1, b = []; this.append = function() { for(var i=0,f=arguments.length;i<f;i++) { if(!arguments[i]){ b[++k] = ""; continue;//break; } b[++k] = arguments[i]; }; }; function toString(s){ return b.join(s || ''); }; this.valueOf = this.toString = toString; }; FString.prototype = new String(); function randStr(len){ var str =""; for(var i=0;i<len;i++){ str += String.fromCharCode(Math.floor(Math.random()*93)+33); } return str; } var total=0; var start,end; var fstr = new FString(); var tempStr = ""; for(var i=0;i<100000;i++){ tempStr = randStr(25); start = new Date().getTime(); fstr.append(tempStr); end = new Date().getTime(); total += (end - start); } start = new Date().getTime(); fstr = fstr.toString(); end = new Date().getTime(); total += (end - start); print(total); //alert(total);
opt -1:742
opt 0:878.5
opt 1:933.25
opt 4:923.25
opt 9:951
firefox:1400
環境も何もかも適当なベンチだがまあだいたい把握した