aboutsummaryrefslogtreecommitdiffstats
path: root/speed/benchmark.js
blob: 50d5cad6949ff6849f69fec5af6c77fe39d590dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Runs a function many times without the function call overhead
function benchmark(fn, times, name){
	fn = fn.toString();
	var s = fn.indexOf('{')+1,
		e = fn.lastIndexOf('}');
	fn = fn.substring(s,e);
	
  return benchmarkString(fn, times, name);
}

function benchmarkString(fn, times, name) {
  var fn = new Function("i", "var t=new Date; while(i--) {" + fn + "}; return new Date - t")(times)
  fn.displayName = name || "benchmarked";
  return fn;
}