function perfTest(name, test) { var timings = []; // run the test 1000 times so we can get a happy average for (var i = 0; i < 1000; i++) { var testStart = new Date().getTime(); test(); var testEnd = new Date().getTime(); timings.push((testEnd - testStart)/1000); } return analyzeTimes(name, timings); } function analyzeTimes(name, timings) { var stats = {name: name, min: null, max: null, avg: 0, total: 0}; var sum = 0; for (var i = 0; i < timings.length; i++) { stats.total += timings[i]; if (i == 0) { stats.min = timings[i]; stats.max = timings[i]; } else { if (timings[i] > stats.max) { stats.max = timings[i]; } if (timings[i] < stats.min) { stats.min = timings[i]; } } } stats.avg = (stats.total / timings.length); return stats; } function perfCompare(name, tests) { var results = []; for (var i = 0; j = tests.length, i < j; i++) { results.push(perfTest(tests[i][0], tests[i][1])); } var content = '
| Test | Total | Average | Min | Max |
|---|---|---|---|---|
| " + result.name + " | "; content += "" + result.total + " | "; content += "" + result.avg + " | "; content += "" + result.min + " | "; content += "" + result.max + " | "; } content += "