快速测试显示缩小的JSON反序列化不是二进制MessagePack更快。在测试中,Article.json是550kb缩小的JSON,Article.mpack是它的420kb MP版本。当然可能是一个实现问题。
MessagePack:
//test_mp.js
var msg = require('msgpack');
var fs = require('fs');
var article = fs.readFileSync('Article.mpack');
for (var i = 0; i < 10000; i++) {
msg.unpack(article);
}
JSON:
// test_json.js
var msg = require('msgpack');
var fs = require('fs');
var article = fs.readFileSync('Article.json', 'utf-8');
for (var i = 0; i < 10000; i++) {
JSON.parse(article);
}
所以时间是:
Anarki:Downloads oleksii$ time node test_mp.js
real 2m45.042s
user 2m44.662s
sys 0m2.034s
Anarki:Downloads oleksii$ time node test_json.js
real 2m15.497s
user 2m15.458s
sys 0m0.824s
因此节省空间,但速度更快?
号
测试版本:
Anarki:Downloads oleksii$ node --version
v0.8.12
Anarki:Downloads oleksii$ npm list msgpack
/Users/oleksii
└── [email protected]
似乎主要是像市场炒作负荷。 [“编译”]序列化格式的性能是由于使用的实现。尽管某些格式本身具有更多开销(例如JSON,因为它全部是动态处理的),但格式本身并不“有速度”。然后页面继续“挑选”它如何比较自己......这是一种非公正的时尚。不是我喜欢的。 – 2011-06-15 09:20:53
更正:Gobs无意取代Protocol Buffers,也可能永远不会。此外,Gobs是语言不可知的(它们可以用任何语言阅读/编写,请参阅http://code.google.com/p/libgob/),但它们被定义为与Go处理数据的方式非常匹配,因此它们可以工作与Go最好。 – 2011-06-15 18:59:23
链接到msgpack性能基准测试失败(http://msgpack.org/index/speedtest.png)。 – 2012-10-04 21:12:23