Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Update fast buffer benchmarks

  • Loading branch information...
commit ff027d571bdf4e006717747089aa4015d9bbd9ed 1 parent 17ba821
@ry ry authored
View
6 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
}
View
42 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++
View
6 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;
+}
View
4 benchmark/fast_buffer_creation.js
@@ -0,0 +1,4 @@
+for (var i = 0; i < 1e6; i++) {
+ b = new Buffer(10);
+ b[1] = 2;
+}
Please sign in to comment.
Something went wrong with that request. Please try again.