node.js protocol buffer与json

本文对比了Node.js中使用Protocol Buffer与JSON进行数据解析的性能表现。通过循环1万次解析同一数据集的方式,结果显示Protocol Buffer耗时1.387秒,而JSON.parse仅耗时0.74秒。

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

因为做的东西需要用到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上面都有很大的优势。。。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值