0.0.5 • Published 5 years ago

chronolite v0.0.5

Weekly downloads
6
License
MIT
Repository
github
Last release
5 years ago

chronolite 🕰️

chronolite is a microlibrary for timing, comparing and benchmarking JavaScript functions. It supports both synchronous and asynchronous functions. Common use cases include performance benchmarking for a function, and benchmarking multiple functions against each other.

Install

For npm:

npm install chronolite

For yarn:

yarn add chronolite

Usage

chronolite has 4 core methods:

  • time - Return the running time of a synchronous function
  • timeAsync - Return the running time of a async function (function must return a promise)
  • compare - Find the fastest function out of an array of functions
  • compareAsync - Find the fastest function out of an array of async functions

Methods take objects or arrays of objects of the following schema:

    {
        id: "someFunction", // - string (optional) 
        binding: null // object (optional) - The object to bind the function to (defaults to null)
        fn: someFunc, // function 
        fnArgs: [1, 2, 3], // array - The array of arguments
    }

Here is an example of using the time method:

    const timer = new chronolite();

    const fn = (input) => { 

        // Synthetic wait
        const ms = input * (Math.random() * 1);
        const start = Date.now();
        let now = start;
        while (now - start < ms) {
            now = Date.now();
        }

        return "finished";

    };

    const arg = [10];
    const iterations = 15;

    const time = timer.time({
        fn: first, 
        fnArgs: arg,
    }, iterations);

    console.log("Average time: ", time.averageTime);

License

MIT