mirror of https://github.com/lukechilds/node.git
Ryan Dahl
15 years ago
4 changed files with 55 additions and 3 deletions
@ -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 |
|||
} |
|||
|
@ -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++
|
@ -0,0 +1,6 @@ |
|||
|
|||
FastBuffer = require('./fast_buffer2').FastBuffer; |
|||
for (var i = 0; i < 1e6; i++) { |
|||
b = new FastBuffer(10); |
|||
b[1] = 2; |
|||
} |
@ -0,0 +1,4 @@ |
|||
for (var i = 0; i < 1e6; i++) { |
|||
b = new Buffer(10); |
|||
b[1] = 2; |
|||
} |
Loading…
Reference in new issue