Newbie Paintball Master

    This package has been deprecated

    Author message:

    This package has moved to @starryinternet/map-memo

    map-memo

    2.1.1 • Public • Published

    map-memo

    Build Status

    Generic memoization using Map and WeakMap.


    Installing

    npm install --save map-memo
    

    What/Why?

    Memoization in JavaScript has typically been limited to arguments with primitive values, or by utilizing hacks such as stringifying objects.

    By storing arguments using a series of nested cache objects backed by Map and WeakMap, map-memo is able to memoize functions with any argument types.


    Example

    'use strict';
     
    const memoize = require('map-memo');
     
    function loop( fn, n ) {
      let v;
     
      for ( let i = 0; i < n; ++) {
        v = fn( i );
      }
     
      return v;
    }
     
    let mem = memoize( loop );
     
    console.log( mem( Math.sqrt, 1e9 ) ); // slow
    console.log( mem( Math.sqrt, 1e9 ) ); // fast!

    Example with expire time in milliseconds

    'use strict';
     
    const memoize = require('map-memo');
     
    function getRandom() {
      return Math.random();
    }
     
    let mem = memoize( getRandom, { ttl: 1000 } );
    console.log( mem() );
    console.log( mem() ); // Same value as above
     
    setTimeout( function() {
      console.log( mem() ); // Different value
    }, 1001 );

    Example with asynchronous function

    'use strict';
     
    const memoize = require('map-memo');
     
    function loopAsync( fn, n ) {
      return new Promise( ( resolve, reject ) => {
        let v;
     
        for ( let i = 0; i < n; ++) {
          v = fn( i );
        }
     
        resolve( v );
      });
    }
     
    let mem = memoize( loopAsync );
     
    mem( Math.sqrt, 1e9 ).then( result => {
      console.log( result ); // slow
      mem( Math.sqrt, 1e9 ).then( console.log ); // fast!
    });

    Install

    npm i map-memo

    DownloadsWeekly Downloads

    12

    Version

    2.1.1

    License

    MIT

    Last publish

    Collaborators

    • kevincennis