mirror of
https://github.com/Wan-Video/Wan2.1.git
synced 2025-07-14 11:40:10 +00:00
93 lines
2.3 KiB
JavaScript
93 lines
2.3 KiB
JavaScript
// forked from github.com/creationix/jsonparse
|
|
|
|
// brew install yajl
|
|
// npm install jsonparse yajl
|
|
|
|
// node bench/async.js samples/npm.json
|
|
// jsonfile
|
|
var fs = require('fs')
|
|
, clarinet = require('../clarinet')
|
|
, Parser = require('jsonparse')
|
|
, jsonparser
|
|
, p
|
|
, s
|
|
, start
|
|
, max = process.argv[3] || 1
|
|
, n = process.argv[4] || 9
|
|
, averages = {}
|
|
;
|
|
|
|
function update_averages(what, time) {
|
|
if(averages[what]) {
|
|
averages[what].n++;
|
|
averages[what].time = averages[what].time + time;
|
|
}
|
|
else averages[what] = {n: 1, time: time};
|
|
}
|
|
|
|
console.log('=N("node bench/async.js ' + process.argv[2] + ' ' +
|
|
max + ' ' + n + '")');
|
|
console.log('=N("clp (clarinet parser), cls (clarinet event emitter)")');
|
|
//console.log('=N("jpp (creationix/jsonparse)")');
|
|
|
|
function stream_bench(cb) {
|
|
s = clarinet.createStream();
|
|
s.on('end', function () {
|
|
var exectime = Date.now()-start;
|
|
console.log('cls, %s', exectime);
|
|
update_averages('cls', exectime);
|
|
cb();
|
|
});
|
|
var fs_read = fs.createReadStream(process.argv[2]);
|
|
fs_read.setEncoding('utf-8');
|
|
fs_read.on('data', function(chunk) {
|
|
for (var i = 0; i < max; i++) s.write(chunk);
|
|
});
|
|
fs_read.on('end', function () { s.end(); });
|
|
start = Date.now();
|
|
}
|
|
|
|
function parser_bench(cb) {
|
|
p = clarinet.parser();
|
|
p.onend = function () {
|
|
var exectime = Date.now()-start;
|
|
console.log('clp, %s', exectime);
|
|
update_averages('clp', exectime); cb();
|
|
};
|
|
var fs_read = fs.createReadStream(process.argv[2]);
|
|
fs_read.setEncoding('utf-8');
|
|
fs_read.on('data', function(chunk) {
|
|
for (var i = 0; i < max; i++) p.write(chunk);
|
|
});
|
|
fs_read.on('end', function () {
|
|
p.end();
|
|
if(n===0) process.exit();
|
|
n--;
|
|
setTimeout(repeat,0);
|
|
});
|
|
start = Date.now();
|
|
}
|
|
|
|
function repeat() {
|
|
stream_bench(function () {
|
|
return parser_bench(function(){ }); });
|
|
}
|
|
|
|
function output_avg() {
|
|
console.log('=N("# Version")');
|
|
console.log('=N("' + JSON.stringify(process.versions).replace(/"/g, "'") + '")');
|
|
console.log('=N("# Summary")');
|
|
for(var k in averages) {
|
|
console.log('=N("* %s [%s]: %s ms")', k, averages[k].n,
|
|
averages[k].time/averages[k].n);
|
|
}
|
|
}
|
|
|
|
process.on('SIGINT', function () {
|
|
output_avg();
|
|
process.exit(1);
|
|
});
|
|
|
|
process.on('exit', output_avg);
|
|
|
|
repeat(); |