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中。當你想讓終端使用者獲得全部資源時,這種方式確實能派上用場,但是這會導致你的應用長時間停...