@grimen/totalrecall

    0.1.1 • Public • Published

    js-totalrecall NPM version Build Status Coverage Status

    A runtime step profiler - for Node/JavaScript.

    Introduction

    Aggregating runtime statistics and/or finding bottlenecks in code is one of the most common challenges as a software engineer. This is a library to aid that. In comparison to most existing libraries this one is focused on step profiling; aggregation of runtime information in steps marked by keys/tags/labels and optional meta data, which is used to create a summary of all steps in form of a transaction.

    This is an MVP that most likely will be extended with more profiling features.

    Install

    Install using npm:

    $ npm install @grimen/totalrecall

    Install using yarn:

    $ yarn add @grimen/totalrecall

    Use

    Very basic example:

    const totalrecall = require('@grimen/totalrecall')
    
    const sleep = (seconds = 0) => {
        return new Promise((resolve) => {
            setTimeout(resolve, seconds * 1000)
        })
    }
    
    // ---------------------------------------------------
    //   EXAMPLE: runtime step profiler
    // ------------------------------------------------
    
    let profiler = totalrecall.timer('profile something - using timer', {
        begin: false,
    })
    
    profiler.begin('task 1')
    
    await sleep(0.1)
    
    profiler.begin('task 2')
    
    await sleep(0.2)
    
    profiler.begin('task 3')
    
    await sleep(0.3)
    
    profiler.end()
    
    console.log('[profiler.time / basic]: TIME:', profiler.time)
    console.log('[profiler.time / basic]: STEPS:', profiler.steps)
    
    // ---------------------------------------------------
    //   EXAMPLE: runtime step profiler (detailed)
    // ------------------------------------------------
    
    profiler = totalrecall.timer('profile something - using timer', {
        begin: false,
        enabled: true,
        verbose: true,
        colors: true,
    })
    
    profiler.begin('task 1')
    
    await sleep(0.1)
    
    profiler.begin('task 2')
    
    await sleep(0.2)
    
    profiler.begin('task 3')
    
    await sleep(0.3)
    
    profiler.end()
    
    console.log('[profiler.time / detailed]: TIME:', profiler.time)
    console.log('[profiler.time / detailed]: STEPS:', profiler.steps)

    Test

    Clone down source code:

    $ make install

    Run colorful tests using jest:

    $ make test

    About

    This project was mainly initiated - in lack of solid existing alternatives - to be used at our work at Markable.ai to have common code conventions between various programming environments where Node.js (for I/O heavy operations) is heavily used.

    Credits

    Thanks to op-bk for creative help with naming this library.

    License

    Released under the MIT license.

    Install

    npm i @grimen/totalrecall

    DownloadsWeekly Downloads

    2

    Version

    0.1.1

    License

    MIT

    Unpacked Size

    23.3 kB

    Total Files

    17

    Last publish

    Collaborators

    • grimen