mirror of
https://github.com/less/less.js.git
synced 2026-05-01 03:00:22 -04:00
94 lines
2.7 KiB
JavaScript
94 lines
2.7 KiB
JavaScript
var path = require('path'),
|
|
fs = require('fs'),
|
|
now = require("performance-now");
|
|
|
|
var less = require('../lib/less-node');
|
|
var file = path.join(__dirname, 'benchmark.less');
|
|
|
|
if (process.argv[2]) { file = path.join(process.cwd(), process.argv[2]) }
|
|
|
|
fs.readFile(file, 'utf8', function (e, data) {
|
|
var start, total;
|
|
|
|
console.log("Benchmarking...\n", path.basename(file) + " (" +
|
|
parseInt(data.length / 1024) + " KB)", "");
|
|
|
|
var renderBenchmark = []
|
|
, parserBenchmark = []
|
|
, evalBenchmark = [];
|
|
|
|
var totalruns = 30;
|
|
var ignoreruns = 5;
|
|
|
|
var i = 0;
|
|
|
|
nextRun();
|
|
|
|
function nextRun() {
|
|
var start, renderEnd, parserEnd;
|
|
|
|
start = now();
|
|
|
|
less.parse(data, {}, function(err, root, imports, options) {
|
|
if (err) {
|
|
less.writeError(err);
|
|
process.exit(3);
|
|
}
|
|
parserEnd = now();
|
|
|
|
var tree, result;
|
|
tree = new less.ParseTree(root, imports);
|
|
result = tree.toCSS(options);
|
|
|
|
renderEnd = now();
|
|
|
|
renderBenchmark.push(renderEnd - start);
|
|
parserBenchmark.push(parserEnd - start);
|
|
evalBenchmark.push(renderEnd - parserEnd);
|
|
|
|
i += 1;
|
|
//console.log('Less Run #: ' + i);
|
|
if(i < totalruns) {
|
|
nextRun();
|
|
}
|
|
else {
|
|
finish();
|
|
}
|
|
});
|
|
}
|
|
|
|
function finish() {
|
|
function analyze(benchmark, benchMarkData) {
|
|
console.log('----------------------');
|
|
console.log(benchmark);
|
|
console.log('----------------------');
|
|
var totalTime = 0;
|
|
var mintime = Infinity;
|
|
var maxtime = 0;
|
|
for(var i = ignoreruns; i < totalruns; i++) {
|
|
totalTime += benchMarkData[i];
|
|
mintime = Math.min(mintime, benchMarkData[i]);
|
|
maxtime = Math.max(maxtime, benchMarkData[i]);
|
|
}
|
|
var avgtime = totalTime / (totalruns - ignoreruns);
|
|
var variation = maxtime - mintime;
|
|
var variationperc = (variation / avgtime) * 100;
|
|
|
|
console.log("Min. Time: " + Math.round(mintime) + " ms");
|
|
console.log("Max. Time: " + Math.round(maxtime) + " ms");
|
|
console.log("Total Average Time: " + Math.round(avgtime) + " ms (" +
|
|
parseInt(1000 / avgtime *
|
|
data.length / 1024) + " KB\/s)");
|
|
console.log("+/- " + Math.round(variationperc) + "%");
|
|
console.log("");
|
|
}
|
|
|
|
analyze('Parsing', parserBenchmark);
|
|
analyze('Evaluation', evalBenchmark);
|
|
analyze('Render Time', renderBenchmark);
|
|
|
|
}
|
|
|
|
});
|
|
|