js.bench[2] = eval || Function
Array.withAll - ellaneous
ついでに比べてみた。
Array.withAllE = function(obj, num){ /// with eval /// return (num = Number(num)) > 1 ? eval('0,function($){return['+ Array(num).join('$,') +'$]}')(obj) : [obj]; }; Array.withAllF = function(obj, num){ /// with Function /// return (num = Number(num)) > 1 ? Function('$', 'return['+ Array(num).join('$,') +'$]')(obj) : [obj]; }; confirm((function($){ var b = function(f){ for(var t = 1, d = 0, i; d < 64; d = new Date - d, t *= 8) for(d = new Date, i = t; i--;) f(); return d / (t / 8); }, c = b(function(){}), r = [], x = 0, k; for(k in $) r[x++] = k +': '+ (((b($[k])-c)*1000)|0)/1000 +' [ms/run]'; return r.join('\n\n'); })({ E: function(){ Array.withAllE('hoge', 1000) }, F: function(){ Array.withAllF('hoge', 1000) } }));
IE, Firefox, cscript(WSH) ではほとんど同じ。Rhino は eval の方が三倍近く*11.5倍程速い。
*1:「d < 50」では試行回数が足りてなかったらしい