mirror of https://github.com/lukechilds/node.git
isaacs
13 years ago
1 changed files with 72 additions and 0 deletions
@ -0,0 +1,72 @@ |
|||||
|
// Call fs.readFile over and over again really fast.
|
||||
|
// Then see how many times it got called.
|
||||
|
// Yes, this is a silly benchmark. Most benchmarks are silly.
|
||||
|
|
||||
|
var path = require('path'); |
||||
|
var filename = path.resolve(__dirname, 'http.sh'); |
||||
|
var fs = require('fs'); |
||||
|
var count = 0; |
||||
|
var go = true; |
||||
|
var len = -1; |
||||
|
var assert = require('assert'); |
||||
|
|
||||
|
var concurrency = 1; |
||||
|
var encoding = null; |
||||
|
var time = 10; |
||||
|
|
||||
|
for (var i = 2; i < process.argv.length; i++) { |
||||
|
var arg = process.argv[i]; |
||||
|
if (arg.match(/^-e$/)) { |
||||
|
encoding = process.argv[++i] || null; |
||||
|
} else if (arg.match(/^-c$/)) { |
||||
|
concurrency = ~~process.argv[++i]; |
||||
|
if (concurrency < 1) concurrency = 1; |
||||
|
} else if (arg === '-t') { |
||||
|
time = ~~process.argv[++i]; |
||||
|
if (time < 1) time = 1; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
setTimeout(function() { |
||||
|
go = false; |
||||
|
}, time * 1000); |
||||
|
|
||||
|
function round(n) { |
||||
|
return Math.floor(n * 100) / 100; |
||||
|
} |
||||
|
|
||||
|
var start = process.hrtime(); |
||||
|
while (concurrency--) readFile(); |
||||
|
|
||||
|
function readFile() { |
||||
|
if (!go) { |
||||
|
process.stdout.write('\n'); |
||||
|
console.log('read the file %d times (higher is better)', count); |
||||
|
var end = process.hrtime(); |
||||
|
var elapsed = [end[0] - start[0], end[1] - start[1]]; |
||||
|
var ns = elapsed[0] * 1E9 + elapsed[1]; |
||||
|
var nsper = round(ns / count); |
||||
|
console.log('%d ns per read (lower is better)', nsper); |
||||
|
var readsper = round(count / (ns / 1E9)); |
||||
|
console.log('%d reads per sec (higher is better)', readsper); |
||||
|
process.exit(0); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
if (!(count % 1000)) { |
||||
|
process.stdout.write('.'); |
||||
|
} |
||||
|
|
||||
|
if (encoding) fs.readFile(filename, encoding, then); |
||||
|
else fs.readFile(filename, then); |
||||
|
|
||||
|
function then(er, data) { |
||||
|
assert.ifError(er); |
||||
|
count++; |
||||
|
// basic sanity test: we should get the same number of bytes each time.
|
||||
|
if (count === 1) len = data.length; |
||||
|
else assert(len === data.length); |
||||
|
readFile(); |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue