快速測試顯示縮小的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