iOS5系统API和5个开源库的JSON解析速度测试
2015-08-28 15:31
836 查看
原创作品,允许转载,转载时请务必以超链接形式标明文章
原始出处 、作者信息和本声明。否则将追究法律责任。/article/4371706.html
iOS5新增了JSON解析的API,我们将其和其他五个开源的JSON解析库进行了解析速度的测试,下面是测试的结果和工程代码附件。
我们选择的测试对象包含下面的这几个框架,其中NSJSONSerialization是iOS5系统新增的JSON解析的API,需要iOS5的环境,如果您在更低的版本进行测试,应该屏蔽相应的代码调用。
- [SBJSON (json-framework)](http://code.google.com/p/json-framework/)
- [TouchJSON (from touchcode)](http://code.google.com/p/touchcode/)
- [YAJL (objective-C bindings)](http://github.com/gabriel/yajl-objc)
- [JSONKit](https://github.com/johnezang/JSONKit)
- [NextiveJson](https://github.com/nextive/NextiveJson)
-[NSJSONSerialization](http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40010946)
我们选择了四个包含json格式的数据的文件进行测试。每一个文件进行100的解析动作,对解析的时间进行比较。
工程包含以下的文件和框架:
![](http://img1.51cto.com/attachment/201111/221824493.png)
测试时间间隔的的代码的宏定义如下,其中计算的次数和解析的代码由外部调用传入:
这是外面调用的代码,设置读取的json文件和计算的次数,每一个函数在进行对应框架API的解析代码:
我们的测试的环境是Xcode 4.2和iOS5,计算次数是100次,这是计算的结果Log:
将上面的数据整理成下面的图表:
![](http://img1.51cto.com/attachment/201111/221840568.png)
测试的结果显示,系统的API的解析速度最快,我们在工程项目中选择使用,也是应用较为广泛的SBJSON的解析速度为倒数第二差,令我大跌眼镜。
与系统API较为接近的应该是JSONKit。
这里没有对API的开放接口和使用方式进行比较,若单纯基于以上解析速度的测试:
1:iOS5应该选择系统的API进行
2:不能使用系统API的应该选择JSONKit
附件是程序源码和本文word文档。
本文出自 “ArthurChen” 博客,请务必保留此出处/article/4371706.html
原始出处 、作者信息和本声明。否则将追究法律责任。/article/4371706.html
iOS5新增了JSON解析的API,我们将其和其他五个开源的JSON解析库进行了解析速度的测试,下面是测试的结果和工程代码附件。
我们选择的测试对象包含下面的这几个框架,其中NSJSONSerialization是iOS5系统新增的JSON解析的API,需要iOS5的环境,如果您在更低的版本进行测试,应该屏蔽相应的代码调用。
- [SBJSON (json-framework)](http://code.google.com/p/json-framework/)
- [TouchJSON (from touchcode)](http://code.google.com/p/touchcode/)
- [YAJL (objective-C bindings)](http://github.com/gabriel/yajl-objc)
- [JSONKit](https://github.com/johnezang/JSONKit)
- [NextiveJson](https://github.com/nextive/NextiveJson)
-[NSJSONSerialization](http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40010946)
我们选择了四个包含json格式的数据的文件进行测试。每一个文件进行100的解析动作,对解析的时间进行比较。
工程包含以下的文件和框架:
![](http://img1.51cto.com/attachment/201111/221824493.png)
测试时间间隔的的代码的宏定义如下,其中计算的次数和解析的代码由外部调用传入:
[align=left]#define RunWithCount(count, description, expr) \[/align] [align=left]do { \[/align] [align=left]CFAbsoluteTime start = CFAbsoluteTimeGetCurrent(); \[/align] [align=left]for(NSInteger i = 0; i < count; i++) { \[/align] [align=left] NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; \[/align] [align=left] expr; \[/align] [align=left] [pool release]; \[/align] [align=left]} \[/align] [align=left]\[/align] [align=left]CFTimeInterval took = CFAbsoluteTimeGetCurrent() - start; \[/align] [align=left]NSLog(@"%@ %0.3f", description, took); \[/align] [align=left]\[/align] [align=left]} while (0)[/align] |
[align=left] JSONTest *test = [[JSONTest alloc] init];[/align] [align=left] NSInteger count = 100;[/align] [align=left] [test runWithResourceName:@"twitter_public.json" count:count];[/align] [align=left] [test runWithResourceName:@"lastfm.json" count:count];[/align] [align=left] [test runWithResourceName:@"delicious_popular.json" count:count];[/align] [align=left] [test runWithResourceName:@"yelp.json" count:count];[/align] |
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 |
![](http://img1.51cto.com/attachment/201111/221840568.png)
测试的结果显示,系统的API的解析速度最快,我们在工程项目中选择使用,也是应用较为广泛的SBJSON的解析速度为倒数第二差,令我大跌眼镜。
与系统API较为接近的应该是JSONKit。
这里没有对API的开放接口和使用方式进行比较,若单纯基于以上解析速度的测试:
1:iOS5应该选择系统的API进行
2:不能使用系统API的应该选择JSONKit
附件是程序源码和本文word文档。
本文出自 “ArthurChen” 博客,请务必保留此出处/article/4371706.html
相关文章推荐
- ios 优化TableView技巧
- iOS 方法
- iOS开发之多线程(线程的状态)
- iOS内存管理与ARC,及Property介绍
- iOS 定时器封装
- 【转载】 聊聊 iOS 开发
- ios 基于AFN的图片上传
- iOS开发之多线程(线程间的通信)
- iOS开发:创建真机调试证书
- ios--本地通知
- iOS中的结构体保存到数组与读取
- ios 富文本
- 【iOS】有用资源
- nagios监控脚本编写
- IOS消息转发机制
- iOS开发-loadView和viewDidLoad总结
- iOS 本地推送 (本地通知)
- iOS FMDB小试了一下
- iOS开发之多线程(NSThread创建线程)
- ios禁用多按钮同时点下的效果