| // 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 common = require('../common.js'); |
| var filename = path.resolve(__dirname, '.removeme-benchmark-garbage'); |
| var fs = require('fs'); |
| |
| var bench = common.createBenchmark(main, { |
| dur: [5], |
| len: [1024, 16 * 1024 * 1024], |
| concurrent: [1, 10] |
| }); |
| |
| function main(conf) { |
| var len = +conf.len; |
| try { fs.unlinkSync(filename); } catch (e) {} |
| var data = new Buffer(len); |
| data.fill('x'); |
| fs.writeFileSync(filename, data); |
| data = null; |
| |
| var reads = 0; |
| bench.start(); |
| setTimeout(function() { |
| bench.end(reads); |
| try { fs.unlinkSync(filename); } catch (e) {} |
| }, +conf.dur * 1000); |
| |
| function read() { |
| fs.readFile(filename, afterRead); |
| } |
| |
| function afterRead(er, data) { |
| if (er) |
| throw er; |
| |
| if (data.length !== len) |
| throw new Error('wrong number of bytes returned'); |
| |
| reads++; |
| read(); |
| } |
| |
| var cur = +conf.concurrent; |
| while (cur--) read(); |
| } |