首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSONKit基准

JSONKit基准
EN

Stack Overflow用户
提问于 2013-04-25 15:16:54
回答 3查看 7K关注 0票数 15

我从http://www.bonto.ch/blog/2011/12/08/json-libraries-for-ios-comparison-updated/中提取了代码,并在本地机器上进行了测试。

我对这个结果感到惊讶,NSJSonSerialization的性能比JSONKit要好得多。

NSJSonSerialization在速度上真的超过了JSONKit吗?还是我做错了什么?

twitter_timeline.json

repeat.json

random.json

EN

回答 3

Stack Overflow用户

发布于 2013-08-11 10:40:39

你没做错什么。

iOS 6的情况发生了变化,苹果大大提高了NSJSONSerialization的性能。当使用iOS 6和更高版本时,它是最快的。

JSONKit也已经一年没有更新了。它落后了。

票数 7
EN

Stack Overflow用户

发布于 2013-09-11 12:33:36

有趣的是,仍然有人关心JSON解析器的性能;)

大约三年前,我开发了自己的JSON解析器,其目标是使其快速,并具有低内存脚印。从那以后,我对它与其他人的比较感兴趣,尤其是NSJSONSerialization和JSONKit。我确实有一些我偶尔运行的工作台标记,以检查新编译器和OSs是如何改进解析器的。我还分叉了Bonto的工作台,修复了一些错误,添加了一些病态的JSON文件,并添加了我自己的解析器。

我可以肯定的是,在过去的几年里,NSJSONSerialization的性能有了很大的提高。在许多工作负载上,它现在可与JSONKit相媲美。如果我没记错的话,NSJSONSerialization iOS 5.0需要690 on的测试,而现在iOS 6.1的测试速度是520 on。JSONKit花费了大约524 to -现在有了相同的源代码--花费了大约500 to,后者仅仅是因为更好的编译器。

由于我很好奇,我收集了一些结果,用Xcode编译(很快就可用了)和一些截图,这些截图都是从我的分叉Bonto的工作台标记上拍摄的。

测试包括我自己的解析器库(JPJson),在测试中名为"JPJsonData“(尚未签入GitHub的最新版本),这是一个公平和可比较的测试。我保证,JSONKit已经被编译,并且启用了所有的优化,并且禁用了断言,所以它是尽可能快的。

这个测试已经在这个硬件上运行,它是一个iPad 2(第二个变体),具有以下规格:

系统名称: iPhone OS系统版本: 6.1.3模型: iPad本地化模型: iPad平台: iPad 2,2硬件模型: K94AP平台类型: 14平台字符串:iPad 2G CPU频率: 475.113 MHz总线频率: 475.113 MHz总内存: 502 MByte用户内存: 419 MByte

其他一些测试文件,几乎一般的JSON:

主要是数字的JSON:

具有大多数随机Unicode字符串的JSON。

这些JSON字符串确实包含"Unicode非字符“和"Unicode空”字符。JSONKit不允许这些字符-因此是失败的。JPJson默认不允许这些字符,但是它有一些选项,在设置这些选项时,允许JSON中的字符:

更新

我在iPhone 7上运行了32位和64位iOS 5的基准测试。

JSONKit未能为64位进行编译.

代码语言:javascript
复制
System Name: iPhone OS
System Version: 7.0.4
Model: iPhone
Localized Model: iPhone
Platform: iPhone6,2
Hardware Model: N53AP
Platform Type: 18
Platform String: Unknown iPhone
CPU Frequency: 0 MHz
BUS Frequency: 0 MHz
Total Memory: 999 MByte
User Memory: 858 MByte

所有的时间都在毫秒之内。

代码语言:javascript
复制
-----------------------------------
twitter_timeline.json

| Library             |  32-bit |  64-bit |
|---------------------|--------:|--------:|
| JSONKitData         |   1.68  |       *)|
| JPJsonData          |   1.16  |    1.29 |
| NSJSONSerialization |   2.44  |    2.21 |
| SBJsonData          |   6.05  |    6.69 |



-----------------------------------
appache_builds.json

| Library             |  32-bit |  64-bit |
|---------------------|--------:|--------:|
| JSONKitData         |    2.80 |      *) |
| JPJsonData          |    3.21 |    3.52 |
| NSJSONSerialization |    3.23 |    4.17 |
| SBJsonData          |   10.41 |   11.75 |


-----------------------------------
mesh.json

| Library             |  32-bit |  64-bit |
|---------------------|--------:|--------:|
| JSONKitData         |   87.64 |      *) |
| JPJsonData          |   25.46 |   20.34 |
| NSJSONSerialization |  144.25 |   34.25 |
| SBJsonData          |  105.60 |  107.70 |



-----------------------------------
sample.json

| Library             |  32-bit |  64-bit |
|---------------------|--------:|--------:|
| JSONKitData         |  failed |      *) |
| JPJsonData          |    5.97 |    6.39 |
| NSJSONSerialization |   18.94 |   13.66 |
| SBJsonData          |  failed |   88.19 |


-----------------------------------
random.json

| Library             |  32-bit |  64-bit |
|---------------------|--------:|--------:|
| JSONKitData         |   23.01 |      *) |
| JPJsonData          |   17.69 |   20.62 |
| NSJSONSerialization |   28.83 |   28.60 |
| SBJsonData          |   82.93 |   82.74 |

*) Failed to compile
票数 4
EN

Stack Overflow用户

发布于 2013-09-11 09:26:33

我在iPhone 4 (ios7)和iPhone 4S (IOS6.1)上运行测试,在这两种情况下NSJSONSerialization都更快。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16218583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档