diff --git a/benchmark/buffer_creation.js b/benchmark/buffer_creation.js index 44ae32e3150e25..3bc711e3bade77 100644 --- a/benchmark/buffer_creation.js +++ b/benchmark/buffer_creation.js @@ -1,6 +1,6 @@ +SlowBuffer = require('buffer').SlowBuffer; - -for (var i = 0; i < 9e7; i++) { - b = new Buffer(10); +for (var i = 0; i < 1e6; i++) { + b = new SlowBuffer(10); b[1] = 2 } diff --git a/benchmark/fast_buffer2.js b/benchmark/fast_buffer2.js new file mode 100644 index 00000000000000..861ae3baae726a --- /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++ diff --git a/benchmark/fast_buffer2_creation.js b/benchmark/fast_buffer2_creation.js new file mode 100644 index 00000000000000..877f5695d2725c --- /dev/null +++ b/benchmark/fast_buffer2_creation.js @@ -0,0 +1,6 @@ + +FastBuffer = require('./fast_buffer2').FastBuffer; +for (var i = 0; i < 1e6; i++) { + b = new FastBuffer(10); + b[1] = 2; +} diff --git a/benchmark/fast_buffer_creation.js b/benchmark/fast_buffer_creation.js new file mode 100644 index 00000000000000..fbd0c7579a4507 --- /dev/null +++ b/benchmark/fast_buffer_creation.js @@ -0,0 +1,4 @@ +for (var i = 0; i < 1e6; i++) { + b = new Buffer(10); + b[1] = 2; +}