1. 程式人生 > >JSON與protocol buffer效率比較

JSON與protocol buffer效率比較

對於較多資訊的儲存和較大檔案,protocol buffer的寫入和解析效率明顯高很多。但是JSON格式的可讀性明顯要好。

JSON

總共寫65535條Data記錄到檔案中,測試結果如下:

生成的檔案尺寸是23,733k。

生成檔案的時間是12.80秒。

從該檔案中解析的時間是11.50秒。

Protocol Buffer

總共寫65535條Data記錄到檔案中,測試結果如下:

生成的檔案尺寸是3760k。

生成檔案的時間是0.08秒。

從該檔案中解析的時間是0.07秒。

JSON、Protocol 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格式的可讀性明顯要好。

--------------------- 作者:sudaobo 來源:CSDN 原文:https://blog.csdn.net/sudaobo/article/details/5439994?utm_source=copy 版權宣告:本文為博主原創文章,轉載請附上博文連結!