node.js protocol buffer与json

来源:互联网 发布:java认证考试报名 编辑:程序博客网 时间:2024/06/17 11:44

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

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