diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2010-09-07 16:30:17 -0700 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2010-09-09 11:03:50 -0700 |
commit | ff027d571bdf4e006717747089aa4015d9bbd9ed (patch) | |
tree | 3fe6c0407f9a35bc913cd46a503faed961d95053 /benchmark/fast_buffer2.js | |
parent | 17ba821e6093c0d36d2117cab41b0a860bfaa805 (diff) | |
download | node-new-ff027d571bdf4e006717747089aa4015d9bbd9ed.tar.gz |
Update fast buffer benchmarks
Diffstat (limited to 'benchmark/fast_buffer2.js')
-rw-r--r-- | benchmark/fast_buffer2.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/benchmark/fast_buffer2.js b/benchmark/fast_buffer2.js new file mode 100644 index 0000000000..861ae3baae --- /dev/null +++ b/benchmark/fast_buffer2.js @@ -0,0 +1,42 @@ +var SlowBuffer = require('buffer').SlowBuffer; +var POOLSIZE = 8*1024; +var pool; + +function allocPool () { + pool = new SlowBuffer(POOLSIZE); + pool.used = 0; +} + +function FastBuffer (length) { + this.length = length; + + if (length > POOLSIZE) { + // Big buffer, just alloc one. + this.parent = new Buffer(length); + this.offset = 0; + } else { + // Small buffer. + if (!pool || pool.length - pool.used < length) allocPool(); + this.parent = pool; + this.offset = pool.used; + pool.used += length; + } + + // HERE HERE HERE + SlowBuffer.makeFastBuffer(this.parent, this, this.offset, this.length); +} + +exports.FastBuffer = FastBuffer; + +FastBuffer.prototype.get = function (i) { + if (i < 0 || i >= this.length) throw new Error("oob"); + return this.parent[this.offset + i]; +}; + +FastBuffer.prototype.set = function (i, v) { + if (i < 0 || i >= this.length) throw new Error("oob"); + return this.parent[this.offset + i] = v; +}; + +// TODO define slice, toString, write, etc. +// slice should not use c++ |