您的位置:首页 > Web前端 > Node.js

node.js protocol buffer与json

2013-07-21 14:02 381 查看
其实不太愿意在博客是写这种太过于偏用的博文,更喜欢写一些源码分析一类的。。。但是发现偏应用的看的人更多一些。。。于是就两者结合一下吧。。。

因为做的东西需要用到protocol buffer,以前试着在github上面找过node.js的protocol buffer的库,不过发现没有好用的,因为现在马上就要用到了,又上github上面去找了一下,发现原来那个不好用的现在还不错了。。地址:

https://github.com/dcodeIO/ProtoBuf.js

这里就对比一下对于相同的内容,分别用protocol buffer的decode与node.js自己的JSON.parse,看看谁的表现更好吧,对比代码如下:var http = require("http"),
fs = require("fs"),
ProtoBuf = require("protobufjs");

var Message = ProtoBuf.protoFromFile("example.proto").build("Message");

if (Message.encode) {
console.log(1111111);
}

var before = new Date().getTime();
for (var i = 0; i < 10000; i++) {
var data = fs.readFileSync("fjs.dat");
var msg = Message.decode(data);

//var data = fs.readFileSync("fjs.txt");
//var msg = JSON.parse(data);

//console.log(msg);
}
var after = new Date().getTime();
console.log((after - before) / 1000)
其中message的定义如下:message Message {
required string text = 1;
}

其实很简单吧,他们最终要解析的数据如下:{"text" : "aaa"}
最后结果。。。

像上面的代码那样,循环1w次,

protocol buffer用了1.387秒,

JSON.parse用了0.74秒,

那么在node.js中谁的效率更高应该一目了然了吧。。。。

毕竟json本来是javascript原生的东西,parse走的都是javascript引擎的流程,而protocol buffer毕竟还在上层写了那么多的javascript代码。。。

当然这种现象在node.js中适用,在别的语言中就不适用啦。。。以前做过java的对比,分别用protocol buffer与json,最后protocol buffer无论是在decode还是encode上面都有很大的优势。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: