Первая функция всегда медленнее, почему? Не могу понять!
Особенно заметно это в Chrome, он как будто разогревается (последующие запуски чуть быстрее). Но главное сохраняется всегда:
первая функция всегда медленнее.
function cmpobjs (f1, f2) {
return f1.time<f2.time?-1:(f1.time>f2.time?1:0);
};
function sorti(m)
{
m.sort();
}
var funs=[
{f: sorti, fn: "sorti_1_slower_than_others", time: 0},
{f: sorti, fn: "sorti_2", time: 0},
{f: sorti, fn: "sorti_3", time: 0},
{f: sorti, fn: "sorti_4", time: 0},
{f: sorti, fn: "sorti_5", time: 0},
{f: sorti, fn: "sorti_6", time: 0},
{f: sorti, fn: "sorti_7", time: 0},
{f: sorti, fn: "sorti_8", time: 0},
{f: sorti, fn: "sorti_9", time: 0},
];
var i,m,data=[],str="";
for (i=1;i<=77777;i++)
data[i]="string"+Math.random();
for (i=0;i<funs.length;i++) {
m=data.slice();
t1 = performance.now();
funs[i].f(m);
t2 = performance.now();
funs[i].time=t2-t1;
}
funs.sort(cmpobjs);
//console.log("\nResults:");
str="Results:\n";
for (i=0;i<funs.length;i++) {
//console.log(funs[i].fn + ": " + (funs[i].time).toFixed(4) + " мс");
str+=funs[i].fn + ": " + (funs[i].time).toFixed(4) + " мс\n";
}
alert(str);