Built motion from commit 6a09e18b.|2.6.11
[motion2.git] / legacy-libs / @protobufjs / float / bench / suite.js
1 "use strict";\r
2 module.exports = newSuite;\r
3 \r
4 var benchmark = require("benchmark"),\r
5     chalk     = require("chalk");\r
6 \r
7 var padSize = 27;\r
8 \r
9 function newSuite(name) {\r
10     var benches = [];\r
11     return new benchmark.Suite(name)\r
12     .on("add", function(event) {\r
13         benches.push(event.target);\r
14     })\r
15     .on("start", function() {\r
16         process.stdout.write("benchmarking " + name + " performance ...\n\n");\r
17     })\r
18     .on("cycle", function(event) {\r
19         process.stdout.write(String(event.target) + "\n");\r
20     })\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
28                     return;\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
32             });\r
33         }\r
34         process.stdout.write("\n");\r
35     });\r
36 }\r
37 \r
38 function getHz(bench) {\r
39     return 1 / (bench.stats.mean + bench.stats.moe);\r
40 }\r
41 \r
42 function pad(str, len, l) {\r
43     while (str.length < len)\r
44         str = l ? str + " " : " " + str;\r
45     return str;\r
46 }\r