diff --git a/bloomfilter.js b/bloomfilter.js index 9bac70b..9d7bd60 100644 --- a/bloomfilter.js +++ b/bloomfilter.js @@ -6,9 +6,18 @@ function BloomFilter(m, k) { this.m = m; this.k = k; - var buckets = this.buckets = [], + var buckets, n = Math.ceil(m / k), i = -1; + try { + var buffer = new ArrayBuffer(4 * n), + kbuffer = new ArrayBuffer(4 * k); + buckets = this.buckets = new Uint32Array(buffer); + this._locations = new Uint32Array(kbuffer); + } catch (e) { + buckets = this.buckets = []; + this._locations = []; + } while (++i < n) buckets[i] = 0; } @@ -16,7 +25,7 @@ BloomFilter.prototype.locations = function(v) { var k = this.k, m = this.m, - r = [], + r = this._locations, a = fnv_1a(v), b = fnv_1a_b(a), i = -1;