Skip to content

Commit a22a70b

Browse files
committed
a little benchmark
1 parent c7d7607 commit a22a70b

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed

bm.js

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
/*
2+
MIT License http://www.opensource.org/licenses/mit-license.php
3+
Author Tobias Koppers @sokra
4+
*/
5+
var webpack = require("./lib/webpack");
6+
var path = require("path");
7+
8+
var TIMES = 5;
9+
10+
/* TESTS */
11+
12+
var root = path.join(__dirname, "test", "browsertest");
13+
14+
var testCases = {
15+
"javascript ": path.join(root, "lib", "a.js"),
16+
"javascript with deps": path.join(root, "lib", "b.js"),
17+
"css ": path.join(root, "node_modules", "resources-module", "stylesheet-import2.css"),
18+
"less ": path.join(root, "node_modules", "resources-module", "import2.less"),
19+
"jade ": path.join(root, "resources", "template.jade"),
20+
"json ": path.join(__dirname, "package.json"),
21+
"coffee ": path.join(root, "resources", "script.coffee"),
22+
"file ": path.join(__dirname, "node_modules", "file-loader", "png.js") + "!" + path.join(root, "img", "image.png"),
23+
"raw ": path.join(__dirname, "node_modules", "raw-loader") + "!" + path.join(root, "resources", "abc.txt"),
24+
"mixed ": path.join(root, "lib", "index.web.js"),
25+
}
26+
27+
var TESTS = {}
28+
29+
Object.keys(testCases).forEach(function(name) {
30+
TESTS[name + " "] = runWebpack.bind(null, name, testCases[name], false, false, false);
31+
TESTS[name + " single "] = runWebpack.bind(null, name, testCases[name], true, false, false);
32+
TESTS[name + " debug "] = runWebpack.bind(null, name, testCases[name], false, true, false);
33+
TESTS[name + " single debug "] = runWebpack.bind(null, name, testCases[name], true, true, false);
34+
TESTS[name + " min"] = runWebpack.bind(null, name, testCases[name], false, false, true );
35+
TESTS[name + " single min"] = runWebpack.bind(null, name, testCases[name], true, false, true );
36+
TESTS[name + " debug min"] = runWebpack.bind(null, name, testCases[name], false, true, true );
37+
TESTS[name + " single debug min"] = runWebpack.bind(null, name, testCases[name], true, true, true );
38+
});
39+
40+
function runWebpack(name, file, single, debug, min, cb) {
41+
webpack(file, {
42+
output: path.join(root, "js", "bm", name.trim() + ".js"),
43+
single: single,
44+
debug: debug,
45+
minimize: min
46+
}, cb);
47+
}
48+
49+
/* MAIN */
50+
51+
asyncForEach(Object.keys(TESTS), function(name, done) {
52+
var test = TESTS[name];
53+
test(function() {
54+
var startTime = new Date();
55+
asyncTimes(test, TIMES, function(err) {
56+
if(err) throw err;
57+
var endTime = new Date();
58+
var time = (endTime - startTime) / TIMES;
59+
console.log(name + "\t" + time + "ms");
60+
done();
61+
});
62+
});
63+
}, function() {});
64+
65+
/* HELPERS */
66+
67+
function asyncForEach(items, fn, cb) {
68+
var i = -1;
69+
(function run() {
70+
i++;
71+
if(i < items.length) {
72+
fn(items[i], run);
73+
} else {
74+
cb();
75+
}
76+
}());
77+
}
78+
79+
function asyncTimes(fn, count, cb) {
80+
(function run(err) {
81+
if(err) return cb(err);
82+
if(count-- == 0) return cb();
83+
fn(run);
84+
}())
85+
}

0 commit comments

Comments
 (0)