-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
test using https://github.com/bestiejs/benchmark.js
var Benchmark = require('benchmark');
var suite = new Benchmark.Suite;
suite.add('read-last-lines', function() {
const readLastLines = require('read-last-lines');
readLastLines.read('../successful_usernames.txt', 1)
.then((lines) => {lines});
})
.add('readline', function() {
const fs = require('fs');
const readline = require('readline');
const rl = readline.createInterface({
input: fs.createReadStream('../successful_usernames.txt'),
crlfDelay: Infinity
});
const lines = [];
rl.on('line', (line) => lines.push(line));
lines[lines.length -1];
})
.on('cycle', function(event) {
console.log(String(event.target));
})
.on('complete', function() {
console.log('Fastest is ' + this.filter('fastest').map('name'));
})
.run({ 'async': true });
10 lines file
read-last-lines x 19,104 ops/sec ±17.67% (39 runs sampled)
readline x 30,909 ops/sec ±14.72% (30 runs sampled)
Fastest is readline
readline x 37,104 ops/sec ±12.05% (41 runs sampled)
read-last-lines x 23,370 ops/sec ±7.10% (44 runs sampled)
Fastest is readline
1k lines file
readline x 15,055 ops/sec ±18.16% (26 runs sampled)
read-last-lines x 24,809 ops/sec ±9.32% (49 runs sampled)
Fastest is read-last-lines
readline x 15,452 ops/sec ±21.35% (25 runs sampled)
read-last-lines x 24,406 ops/sec ±9.02% (46 runs sampled)
Fastest is read-last-lines
Read last line of a large file with NodeJs
https://stackoverflow.com/questions/40107433/read-last-line-of-a-large-file-with-nodejs
var fs = require('fs');
var readline = require('readline');
var stream = require('stream');
var instream = fs.createReadStream('../successful_usernames.txt');
var outstream = new stream;
var rl = readline.createInterface(instream, outstream);
var lastLine = '';
rl.on('line', function(line) {
if (line == '' || line == require("os").EOL) {
lastLine;
return;
}
lastLine = line;
});
readline x 28,174 ops/sec ±18.58% (31 runs sampled)
read-last-lines x 23,450 ops/sec ±9.56% (48 runs sampled)
Fastest is readline
readline x 24,192 ops/sec ±17.60% (39 runs sampled)
read-last-lines x 26,433 ops/sec ±7.53% (44 runs sampled)
Fastest is read-last-lines,readline
const fs = require('fs');
const readline = require('readline');
const Stream = require('stream');
getLastLine = (fileName, minLength) => {
let inStream = fs.createReadStream(fileName);
let outStream = new Stream;
return new Promise((resolve, reject)=> {
let rl = readline.createInterface(inStream, outStream);
let lastLine = '';
rl.on('line', function (line) {
if (line.length >= minLength) {
lastLine = line;
}
});
rl.on('error', reject)
rl.on('close', function () {
resolve(lastLine)
});
})
};
const fileName = '../successful_usernames.txt';
getLastLine(fileName, 1)
.then((lastLine)=> {
lastLine
})
.catch((err)=> {
err
})
readline x 21,294 ops/sec ±17.92% (39 runs sampled)
read-last-lines x 27,032 ops/sec ±7.18% (45 runs sampled)
Fastest is read-last-lines,readline
readline x 24,050 ops/sec ±21.25% (31 runs sampled)
read-last-lines x 25,332 ops/sec ±8.47% (39 runs sampled)
Fastest is read-last-lines,readline
Metadata
Metadata
Assignees
Labels
No labels