1.0.0 • Published 8 years ago

@vaalentin/object-pool v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
8 years ago

Object pool

Build Status

Simple object pool implementation.

Installation

$ npm install --save @vaalentin/object-pool

Usage

import ObjectPool from '@vaalentin/object-pool';

class Vec2 {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }
}

const pool = new ObjectPool({
  create: (x, y) => new Vec2(x, y),
  reset: (vec, x, y) => {
    vec.x = x;
    vec.y = y;
    return vec;
  }
});

const vec = pool.get(1, 3);

pool.free(vec);

API

pool = new ObjectPool(opts)

Create a new pool, with the possible following opts:

PropertyTypeDescriptionDefault
maxSizeintmax pool size0
collectFreqfloathow often to remove excess objects (in ms)-1
create() => Tfunction to create object() => {}
reset(T) => Tfunction to reset objectobj => obj

obj = pool.get([, args])

Get an object from the pool by calling the reset options with the given args.

pool.free(obj)

Release an object when not needed anymore.

pool.collect()

Remove availabe objects excess.

pool.dispose()

Licence

MIT, see LICENSE.md for more details.