2 module.exports = newSuite;
\r
4 var benchmark = require("benchmark"),
\r
5 chalk = require("chalk");
\r
9 function newSuite(name) {
\r
11 return new benchmark.Suite(name)
\r
12 .on("add", function(event) {
\r
13 benches.push(event.target);
\r
15 .on("start", function() {
\r
16 process.stdout.write("benchmarking " + name + " performance ...\n\n");
\r
18 .on("cycle", function(event) {
\r
19 process.stdout.write(String(event.target) + "\n");
\r
21 .on("complete", function() {
\r
22 if (benches.length > 1) {
\r
23 var fastest = this.filter("fastest"), // eslint-disable-line no-invalid-this
\r
24 fastestHz = getHz(fastest[0]);
\r
25 process.stdout.write("\n" + chalk.white(pad(fastest[0].name, padSize)) + " was " + chalk.green("fastest") + "\n");
\r
26 benches.forEach(function(bench) {
\r
27 if (fastest.indexOf(bench) === 0)
\r
29 var hz = hz = getHz(bench);
\r
30 var percent = (1 - hz / fastestHz) * 100;
\r
31 process.stdout.write(chalk.white(pad(bench.name, padSize)) + " was " + chalk.red(percent.toFixed(1) + "% slower") + "\n");
\r
34 process.stdout.write("\n");
\r
38 function getHz(bench) {
\r
39 return 1 / (bench.stats.mean + bench.stats.moe);
\r
42 function pad(str, len, l) {
\r
43 while (str.length < len)
\r
44 str = l ? str + " " : " " + str;
\r