Skip to content

test read last line #2

@andriyor

Description

@andriyor

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions