You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-09 00:22:08 +03:00
Remove very old benchmarks that do not really work anymore are obsolet and rename "benches" to "benchmarks"
This is also going move the multi_bench benchmark into the benchmarks folder
This commit is contained in:
@@ -1,40 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
var Parser = require('../lib/parser/hiredis').Parser;
|
|
||||||
var assert = require('assert');
|
|
||||||
|
|
||||||
/*
|
|
||||||
This test makes sure that exceptions thrown inside of "reply" event handlers
|
|
||||||
are not trapped and mistakenly emitted as parse errors.
|
|
||||||
*/
|
|
||||||
(function testExecuteDoesNotCatchReplyCallbackExceptions() {
|
|
||||||
var parser = new Parser();
|
|
||||||
var replies = [{}];
|
|
||||||
|
|
||||||
parser.reader = {
|
|
||||||
feed: function() {},
|
|
||||||
get: function() {
|
|
||||||
return replies.shift();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var emittedError = false;
|
|
||||||
var caughtException = false;
|
|
||||||
|
|
||||||
parser
|
|
||||||
.on('error', function() {
|
|
||||||
emittedError = true;
|
|
||||||
})
|
|
||||||
.on('reply', function() {
|
|
||||||
throw new Error('bad');
|
|
||||||
});
|
|
||||||
|
|
||||||
try {
|
|
||||||
parser.execute();
|
|
||||||
} catch (err) {
|
|
||||||
caughtException = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
assert.equal(caughtException, true);
|
|
||||||
assert.equal(emittedError, false);
|
|
||||||
})();
|
|
@@ -1,15 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
var client = require('../index').createClient();
|
|
||||||
var client2 = require('../index').createClient();
|
|
||||||
|
|
||||||
client.once('subscribe', function (channel, count) {
|
|
||||||
client.unsubscribe('x');
|
|
||||||
client.subscribe('x', function () {
|
|
||||||
client.quit();
|
|
||||||
client2.quit();
|
|
||||||
});
|
|
||||||
client2.publish('x', 'hi');
|
|
||||||
});
|
|
||||||
|
|
||||||
client.subscribe('x');
|
|
@@ -1,31 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
var redis = require("../index").createClient(null, null, {
|
|
||||||
// max_attempts: 4
|
|
||||||
});
|
|
||||||
|
|
||||||
redis.on("error", function (err) {
|
|
||||||
console.log("Redis says: " + err);
|
|
||||||
});
|
|
||||||
|
|
||||||
redis.on("ready", function () {
|
|
||||||
console.log("Redis ready.");
|
|
||||||
});
|
|
||||||
|
|
||||||
redis.on("reconnecting", function (arg) {
|
|
||||||
console.log("Redis reconnecting: " + JSON.stringify(arg));
|
|
||||||
});
|
|
||||||
redis.on("connect", function () {
|
|
||||||
console.log("Redis connected.");
|
|
||||||
});
|
|
||||||
|
|
||||||
setInterval(function () {
|
|
||||||
var now = Date.now();
|
|
||||||
redis.set("now", now, function (err, res) {
|
|
||||||
if (err) {
|
|
||||||
console.log(now + " Redis reply error: " + err);
|
|
||||||
} else {
|
|
||||||
console.log(now + " Redis reply: " + res);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, 100);
|
|
@@ -1,8 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
var json = {
|
|
||||||
encode: JSON.stringify,
|
|
||||||
decode: JSON.parse
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = json;
|
|
@@ -1,38 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
var freemem = require('os').freemem;
|
|
||||||
var profiler = require('v8-profiler');
|
|
||||||
var codec = require('../codec');
|
|
||||||
var sent = 0;
|
|
||||||
var exec;
|
|
||||||
|
|
||||||
var pub = require('redis').createClient(null, null, {
|
|
||||||
//command_queue_high_water: 5,
|
|
||||||
//command_queue_low_water: 1
|
|
||||||
})
|
|
||||||
.on('ready', function() {
|
|
||||||
this.emit('drain');
|
|
||||||
})
|
|
||||||
.on('drain', function() {
|
|
||||||
process.nextTick(exec);
|
|
||||||
});
|
|
||||||
|
|
||||||
var payload = '1'; for (var i = 0; i < 12; ++i) payload += payload;
|
|
||||||
console.log('Message payload length', payload.length);
|
|
||||||
|
|
||||||
function exec() {
|
|
||||||
pub.publish('timeline', codec.encode({ foo: payload }));
|
|
||||||
++sent;
|
|
||||||
if (!pub.should_buffer) {
|
|
||||||
process.nextTick(exec);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
profiler.takeSnapshot('s_0');
|
|
||||||
|
|
||||||
exec();
|
|
||||||
|
|
||||||
setInterval(function() {
|
|
||||||
profiler.takeSnapshot('s_' + sent);
|
|
||||||
console.error('sent', sent, 'free', freemem(), 'cmdqlen', pub.command_queue.length, 'offqlen', pub.offline_queue.length);
|
|
||||||
}, 2000);
|
|
@@ -1,10 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
node server.js &
|
|
||||||
node server.js &
|
|
||||||
node server.js &
|
|
||||||
node server.js &
|
|
||||||
node server.js &
|
|
||||||
node server.js &
|
|
||||||
node server.js &
|
|
||||||
node server.js &
|
|
||||||
node --debug pub.js
|
|
@@ -1,22 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
var freemem = require('os').freemem;
|
|
||||||
var codec = require('../codec');
|
|
||||||
|
|
||||||
var id = Math.random();
|
|
||||||
var recv = 0;
|
|
||||||
|
|
||||||
require('redis').createClient()
|
|
||||||
.on('ready', function() {
|
|
||||||
this.subscribe('timeline');
|
|
||||||
})
|
|
||||||
.on('message', function(channel, message) {
|
|
||||||
if (message) {
|
|
||||||
message = codec.decode(message);
|
|
||||||
++recv;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
setInterval(function() {
|
|
||||||
console.error('id', id, 'received', recv, 'free', freemem());
|
|
||||||
}, 2000);
|
|
@@ -1,51 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
var freemem = require('os').freemem;
|
|
||||||
//var profiler = require('v8-profiler');
|
|
||||||
var codec = require('../codec');
|
|
||||||
|
|
||||||
var sent = 0;
|
|
||||||
|
|
||||||
var exec;
|
|
||||||
|
|
||||||
var pub = require('redis').createClient(null, null, {
|
|
||||||
//command_queue_high_water: 5,
|
|
||||||
//command_queue_low_water: 1
|
|
||||||
})
|
|
||||||
.on('ready', function() {
|
|
||||||
this.del('timeline');
|
|
||||||
this.emit('drain');
|
|
||||||
})
|
|
||||||
.on('drain', function() {
|
|
||||||
process.nextTick(exec);
|
|
||||||
});
|
|
||||||
|
|
||||||
var payload = '1'; for (var i = 0; i < 12; ++i) payload += payload;
|
|
||||||
console.log('Message payload length', payload.length);
|
|
||||||
|
|
||||||
function exec() {
|
|
||||||
pub.rpush('timeline', codec.encode({ foo: payload }));
|
|
||||||
++sent;
|
|
||||||
if (!pub.should_buffer) {
|
|
||||||
process.nextTick(exec);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//profiler.takeSnapshot('s_0');
|
|
||||||
|
|
||||||
exec();
|
|
||||||
|
|
||||||
setInterval(function() {
|
|
||||||
//var ss = profiler.takeSnapshot('s_' + sent);
|
|
||||||
//console.error(ss.stringify());
|
|
||||||
pub.llen('timeline', function(err, result) {
|
|
||||||
console.error('sent', sent, 'free', freemem(),
|
|
||||||
'cmdqlen', pub.command_queue.length, 'offqlen', pub.offline_queue.length,
|
|
||||||
'llen', result
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}, 2000);
|
|
||||||
|
|
||||||
/*setTimeout(function() {
|
|
||||||
process.exit();
|
|
||||||
}, 30000);*/
|
|
@@ -1,6 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
node server.js &
|
|
||||||
#node server.js &
|
|
||||||
#node server.js &
|
|
||||||
#node server.js &
|
|
||||||
node --debug pub.js
|
|
@@ -1,31 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
var freemem = require('os').freemem;
|
|
||||||
var codec = require('../codec');
|
|
||||||
|
|
||||||
var id = Math.random();
|
|
||||||
var recv = 0;
|
|
||||||
|
|
||||||
var cmd = require('redis').createClient();
|
|
||||||
|
|
||||||
require('redis').createClient()
|
|
||||||
.on('ready', function() {
|
|
||||||
this.emit('timeline');
|
|
||||||
})
|
|
||||||
.on('timeline', function() {
|
|
||||||
var self = this;
|
|
||||||
this.blpop('timeline', 0, function(err, result) {
|
|
||||||
var message = result[1];
|
|
||||||
if (message) {
|
|
||||||
message = codec.decode(message);
|
|
||||||
++recv;
|
|
||||||
}
|
|
||||||
self.emit('timeline');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
setInterval(function() {
|
|
||||||
cmd.llen('timeline', function(err, result) {
|
|
||||||
console.error('id', id, 'received', recv, 'free', freemem(), 'llen', result);
|
|
||||||
});
|
|
||||||
}, 2000);
|
|
@@ -1,13 +0,0 @@
|
|||||||
# size JSON msgpack bison
|
|
||||||
26602 2151.0170848180414
|
|
||||||
25542 ? 2842.589272665782
|
|
||||||
24835 ? ? 7280.4538397469805
|
|
||||||
6104 6985.234528557929
|
|
||||||
5045 ? 7217.461392841478
|
|
||||||
4341 ? ? 14261.406335354604
|
|
||||||
4180 15864.633685636572
|
|
||||||
4143 ? 12954.806235781925
|
|
||||||
4141 ? ? 44650.70733912719
|
|
||||||
75 114227.07313350472
|
|
||||||
40 ? 30162.440062810834
|
|
||||||
39 ? ? 119815.66013519121
|
|
@@ -1,13 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
gnuplot >size-rate.jpg << _EOF_
|
|
||||||
|
|
||||||
set terminal png nocrop enhanced font verdana 12 size 640,480
|
|
||||||
set logscale x
|
|
||||||
set logscale y
|
|
||||||
set grid
|
|
||||||
set xlabel 'Serialized object size, octets'
|
|
||||||
set ylabel 'decode(encode(obj)) rate, 1/sec'
|
|
||||||
plot '00' using 1:2 title 'json' smooth bezier, '00' using 1:3 title 'msgpack' smooth bezier, '00' using 1:4 title 'bison' smooth bezier
|
|
||||||
|
|
||||||
_EOF_
|
|
Binary file not shown.
Before Width: | Height: | Size: 6.5 KiB |
@@ -1,86 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
var msgpack = require('node-msgpack');
|
|
||||||
var bison = require('bison');
|
|
||||||
var codec = {
|
|
||||||
JSON: {
|
|
||||||
encode: JSON.stringify,
|
|
||||||
decode: JSON.parse
|
|
||||||
},
|
|
||||||
msgpack: {
|
|
||||||
encode: msgpack.pack,
|
|
||||||
decode: msgpack.unpack
|
|
||||||
},
|
|
||||||
bison: bison
|
|
||||||
};
|
|
||||||
|
|
||||||
var obj, l;
|
|
||||||
|
|
||||||
function run(obj, codec) {
|
|
||||||
var t1 = Date.now();
|
|
||||||
var n = 10000;
|
|
||||||
for (var i = 0; i < n; ++i) {
|
|
||||||
codec.decode(l = codec.encode(obj));
|
|
||||||
}
|
|
||||||
var t2 = Date.now();
|
|
||||||
//console.log('DONE', n*1000/(t2-t1), 'codecs/sec, length=', l.length);
|
|
||||||
return [n*1000/(t2-t1), l.length];
|
|
||||||
}
|
|
||||||
|
|
||||||
function series(obj, cname, n) {
|
|
||||||
var rate = 0;
|
|
||||||
var len = 0;
|
|
||||||
for (var i = 0; i < n; ++i) {
|
|
||||||
var r = run(obj, codec[cname]);
|
|
||||||
rate += r[0];
|
|
||||||
len += r[1];
|
|
||||||
}
|
|
||||||
rate /= n;
|
|
||||||
len /= n;
|
|
||||||
console.log(cname + ' ' + rate + ' ' + len);
|
|
||||||
return [rate, len];
|
|
||||||
}
|
|
||||||
|
|
||||||
function forObj(obj) {
|
|
||||||
var r = {
|
|
||||||
JSON: series(obj, 'JSON', 20),
|
|
||||||
msgpack: series(obj, 'msgpack', 20),
|
|
||||||
bison: series(obj, 'bison', 20)
|
|
||||||
};
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
var s = '0';
|
|
||||||
for (var i = 0; i < 12; ++i) s += s;
|
|
||||||
|
|
||||||
obj = {
|
|
||||||
foo: s,
|
|
||||||
arrrrrr: [{a:1,b:false,c:null,d:1.0}, 1111, 2222, 33333333],
|
|
||||||
rand: [],
|
|
||||||
a: s,
|
|
||||||
ccc: s,
|
|
||||||
b: s + s + s
|
|
||||||
};
|
|
||||||
for (i = 0; i < 100; ++i) obj.rand.push(Math.random());
|
|
||||||
forObj(obj);
|
|
||||||
|
|
||||||
obj = {
|
|
||||||
foo: s,
|
|
||||||
arrrrrr: [{a:1,b:false,c:null,d:1.0}, 1111, 2222, 33333333],
|
|
||||||
rand: []
|
|
||||||
};
|
|
||||||
for (i = 0; i < 100; ++i) obj.rand.push(Math.random());
|
|
||||||
forObj(obj);
|
|
||||||
|
|
||||||
obj = {
|
|
||||||
foo: s,
|
|
||||||
arrrrrr: [{a:1,b:false,c:null,d:1.0}, 1111, 2222, 33333333],
|
|
||||||
rand: []
|
|
||||||
};
|
|
||||||
forObj(obj);
|
|
||||||
|
|
||||||
obj = {
|
|
||||||
arrrrrr: [{a:1,b:false,c:null,d:1.0}, 1111, 2222, 33333333],
|
|
||||||
rand: []
|
|
||||||
};
|
|
||||||
forObj(obj);
|
|
@@ -1,20 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
var client = require("redis").createClient(),
|
|
||||||
client2 = require("redis").createClient();
|
|
||||||
|
|
||||||
client.subscribe("something");
|
|
||||||
client.on("subscribe", function (channel, count) {
|
|
||||||
console.log("Got sub: " + channel);
|
|
||||||
client.unsubscribe("something");
|
|
||||||
});
|
|
||||||
|
|
||||||
client.on("unsubscribe", function (channel, count) {
|
|
||||||
console.log("Got unsub: " + channel + ", quitting");
|
|
||||||
client.quit();
|
|
||||||
});
|
|
||||||
|
|
||||||
// exercise unsub before sub
|
|
||||||
client2.unsubscribe("something");
|
|
||||||
client2.subscribe("another thing");
|
|
||||||
client2.quit();
|
|
Reference in New Issue
Block a user