JSONProtocol Buffer都属于数据交换格式,都可以用于保存信息。最近对两者保存信息到文件中和从文件中解析信息的效率进行了测试比较。

 

机器配置

CPU: AMD Athlon 64 X2 4600+

内存: 2G, DDR2 8000

操作系统: win7 32bit

硬盘:WD3200AAJS ATA

 

Protocol Buffer

Protocol Buffer格式定义:

message Data {

    enum VarType {

    BOOL = 0;

    INT = 1;

    FLOAT = 2;

    }

 

    required int32 id = 1;

    required VarType type = 2;

    required string name = 3;

    required int32 src = 4;

 

    required int32 alarm_group = 5;

    required int32 alarm_pri = 6;

    required int32 flag = 7;

    required float alarm_ll = 8;

    required float alarm_l = 9;

    required float alarm_h = 10;

    required float alarm_hh = 11;

    required float alarm_dead = 12;

    required int32 history = 13;

    required float history_rate = 14;

 

}

 

message DataSet {

    required int32 last_id = 1;

    repeated Data var = 2;

}

 

总共写65535条Data记录到文件中,测试结果如下:

生成的文件尺寸是3760k。

生成文件的时间是0.08秒。

从该文件中解析的时间是0.07秒。

 

JSON

JSON格式定义:

 

{

"GlobalDataSet" : 

[

{

"alarm_dead" : 0.0030,

"alarm_flag" : 51,

"alarm_group" : 100,

"alarm_h" : 1.30,

"alarm_hh" : 1.30,

"alarm_l" : 1.30,

"alarm_ll" : 1.30,

"alarm_pri" : 10,

"description" : "infoddddeeeee",

"history" : 1,

"history_rate" : 0.010,

"id" : 0,

"name" : "gd1",

"src" : 3,

"type" : 1,

"unit" : ""

},

 

... ... 

]

}

 

总共写65535条Data记录到文件中,测试结果如下:

生成的文件尺寸是23,733k。

生成文件的时间是12.80秒。

从该文件中解析的时间是11.50秒。

 

测试结论

对于较多信息的存储和较大文件,protocol buffer的写入和解析效率明显高很多。但是JSON格式的可读性明显要好。

 

 

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 2 个月前
8c391e04 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐