Nougat Predominant Middleware

    micro-runner-metrics

    0.2.1 • Public • Published

    Micro-Runner-Metrics

    This is the library used for gathering metrics for Micro-Runner CLI

    Micro-Runner-Metrics is a util library for creating benchmarks tests to be run by Micro-Runner.

    The library supports the creation of CommonJS modules as well as ES6 modules. Bear in mind ES6 modules are supported only when you run Micro-Runner with Node version 14 and onwards.

    Micro-Runner CLI calls function called run with a return object containing the metrics gathered in the test. This library provide a tiny API for overcoming the burden of knowing the contract expected by the CLI for visualizing the results.

    APIs

    The APIs are pretty simple, after istantiating a new Metric object, we need to wrap the code to test with the init and end methods. A key requirement is exposing a run method that returns metrics.result() for the Micro-Runner CLI to collect the metrics tracked in the benchmark.

    init(flag)

    metrics.init("my flag");

    This method is used for initialize the metrics collection. It requires to set a flag as string that has to be same when we call the end method.

    end(flag, data)

    metrics.end("my flag", result);

    This method is used for stopping the time, calculate the execution time and optionally pass some data related computed by the algorithm(data). It requires to set a flag as string that has to be same when of the init method.

    results()

    metrics.results();

    Results method contains the metrics gathered during the benchmark test. You can track multiple benchmarks in the same run function, all the data gathered will be passed to the micro-runner CLI for displaying the results.

    Examples

    Following some code examples on how to implement a micro-runner-metrics library to be used by micro-runner CLI

    CommonJS example

    const Metrics = require('micro-runner-metrics');
    
    module.exports = {
        run: function(){
            let metrics = new Metrics();
    
            metrics.init("assign let");
            let a = 1
            metrics.end("assign let", a);
    
            return metrics.results()
        }
    }
    

    ES6 module example

    With Class

    import Metrics from 'micro-runner-metrics';
    
    class Fibonacci {
        calculate(num) {
            if (num <= 1) return 1;
          
            return this.calculate(num - 1) + this.calculate(num - 2);
          }
    }
    
    class Test {
        run(){
            const metrics = new Metrics();
            const fb = new Fibonacci();
            metrics.init("fibonacci")
            fb.calculate(30)
            metrics.end("fibonacci")
        
            return metrics.results();
        }
    }
    
    export default Test;
    

    Without Class

    import Metrics from 'micro-runner-metrics';
    
    const metrics = new Metrics();
    let init_no = 1000000;
    
    export function run(){
        metrics.init("countdown")
        while(init_no > 0){
            init_no--;
        }
        metrics.end("countdown")
    
        return metrics.results();
    }
    

    Install

    npm i micro-runner-metrics

    DownloadsWeekly Downloads

    7

    Version

    0.2.1

    License

    MIT

    Unpacked Size

    5.67 kB

    Total Files

    6

    Last publish

    Collaborators

    • lucamezzalira