123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- 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;
- 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);
- 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;
- }
|