5個開源庫的JSON解析速度測試

2021-08-26 11:41:38 字數 3479 閱讀 4901

ios5新增了json解析的api,我們將其和其他五個開源的json解析庫進行了解析速度的測試,下面是測試的結果。

我們選擇的測試物件包含下面的這幾個框架,其中nsjsonserialization是ios5系統新增的json解析的api,需要ios5的環境,如果您在更低的版本進行測試,應該遮蔽相應的**呼叫。

- [sbjson (json-framework)](

- [touchjson (from touchcode)](

- [yajl (objective-c bindings)](

- [jsonkit](

- [nextivejson](

我們選擇了四個包含json格式的資料的檔案進行測試。每乙個檔案進行100的解析動作,對解析的時間進行比較。

工程包含以下的檔案和框架:

[img]

測試時間間隔的的**的巨集定義如下,其中計算的次數和解析的**由外部呼叫傳入:

#define runwithcount(count, description, expr) \

do \

\cftimeinterval took = cfabsolutetimegetcurrent() - start; \

nslog(@"%@ %0.3f", description, took); \

\} while (0)

這是外面呼叫的**,設定讀取的json檔案和計算的次數,每乙個函式在進行對應框架api的解析**:

jsontest *test = [[jsontest alloc] init];

nsinteger count = 100;

[test runwithresourcename:@"twitter_public.json" count:count];

[test runwithresourcename:@"lastfm.json" count:count];

[test runwithresourcename:@"delicious_popular.json" count:count];

[test runwithresourcename:@"yelp.json" count:count];

我們的測試的環境是xcode 4.2和ios5,計算次數是100次,這是計算的結果log:

2011-11-24 14:48:59.441 jsonperftest[9716:207] sbjson-twitter_public.json 0.335

2011-11-24 14:48:59.625 jsonperftest[9716:207] yajl-twitter_public.json 0.183

2011-11-24 14:49:00.095 jsonperftest[9716:207] touchjson-twitter_public.json 0.469

2011-11-24 14:49:00.226 jsonperftest[9716:207] jsonkit-twitter_public.json 0.130

2011-11-24 14:49:00.390 jsonperftest[9716:207] nextivejson-twitter_public.json 0.164

2011-11-24 14:49:00.504 jsonperftest[9716:207] nsjsonserialization-twitter_public.json 0.113

2011-11-24 14:49:01.196 jsonperftest[9716:207] sbjson-lastfm.json 0.691

2011-11-24 14:49:01.516 jsonperftest[9716:207] yajl-lastfm.json 0.320

2011-11-24 14:49:02.367 jsonperftest[9716:207] touchjson-lastfm.json 0.850

2011-11-24 14:49:02.580 jsonperftest[9716:207] jsonkit-lastfm.json 0.212

2011-11-24 14:49:02.861 jsonperftest[9716:207] nextivejson-lastfm.json 0.280

2011-11-24 14:49:03.039 jsonperftest[9716:207] nsjsonserialization-lastfm.json 0.177

2011-11-24 14:49:03.546 jsonperftest[9716:207] sbjson-delicious_popular.json 0.506

2011-11-24 14:49:03.787 jsonperftest[9716:207] yajl-delicious_popular.json 0.240

2011-11-24 14:49:04.460 jsonperftest[9716:207] touchjson-delicious_popular.json 0.672

2011-11-24 14:49:04.668 jsonperftest[9716:207] jsonkit-delicious_popular.json 0.207

2011-11-24 14:49:04.904 jsonperftest[9716:207] nextivejson-delicious_popular.json 0.234

2011-11-24 14:49:05.072 jsonperftest[9716:207] nsjsonserialization-delicious_popular.json 0.168

2011-11-24 14:49:05.434 jsonperftest[9716:207] sbjson-yelp.json 0.361

2011-11-24 14:49:05.633 jsonperftest[9716:207] yajl-yelp.json 0.198

2011-11-24 14:49:06.154 jsonperftest[9716:207] touchjson-yelp.json 0.519

2011-11-24 14:49:06.310 jsonperftest[9716:207] jsonkit-yelp.json 0.155

2011-11-24 14:49:06.497 jsonperftest[9716:207] nextivejson-yelp.json 0.186

2011-11-24 14:49:06.637 jsonperftest[9716:207] nsjsonserialization-yelp.json 0.140

[img]

測試的結果顯示,系統的api的解析速度最快,我們在工程專案中選擇使用,也是應用較為廣泛的sbjson的解析速度為倒數第二差,令我大跌眼鏡。

與系統api較為接近的應該是jsonkit。

這裡沒有對api的開放介面和使用方式進行比較,若單純基於以上解析速度的測試:

1:ios5應該選擇系統的api進行

2:不能使用系統api的應該選擇jsonkit

python中5個json庫的速度對比

python中json的序列化與反序列化有很多庫,具體選擇使用哪乙個,或者哪乙個速度更快呢?先上結果 json序列化與反序列化速度對比 按總時間排序 測試資料100 10000 ujson 序列化 2.084 反序列化 1.157 總時間 3.241 yajl 序列化 1.910 反序列化 1.97...

分享乙個c 的json解析庫

7月25日更新 新增關於如何讀取json的值的內容。先貼上 哈 來自github lxjson a json library in cpp 附 json是什麼?怎麼用啊?如何驗證我寫的json是否正確啊?有以下幾點是我認為它的優勢所在 explicit json noexcept explicit ...

加快flex速度的5個方法

從外部載入 media heider提到了乙個常用的flex最佳實踐 限制嵌入到應用 swf檔案中的 的數量,如影象 影片及 等資源都可以從外部的swf檔案載入。flex框架可以直接將 及字型等資源編譯到swf中。當你想讓終端使用者獲得全部資源時,這種方式確實能派上用場,但是這會導致你的應用長時間停...