ObjC Plist文件读取速度比JSON快吗?

我已经做了这个testing项目https://github.com/danielpetroianu/FileDeserializeBenchmarking看看什么是我可以从应用程序包中读取文件的最快方式,并反序列化它。

我很惊讶地看到,Plist文件被读取得比JSON快。 由于JSON文件尺寸较小,我预计它会更快。

Xcode在构build时对Plist文件有一些优化吗? 我做了什么错误导致JSON反序列化需要更多的时间?

由于JSON文件尺寸较小,我预计它会更快。

你没有理由相信。 有很多因素比文件大小重要得多。

是否有Xcode在构build时在Plist文件上做的一些优化

是。 如果它们位于资源包中,它将把它们编译为Plist二进制格式,在某些情况下(可能所有情况都是这样),读取和parsing比文本格式更快。 这是在CopyPlistFile构build阶段完成的。

build设完成后,看起来像这样:

 -rwxr-xr-x 1 rnapier wheel 39556 Oct 7 13:06 FileDeserializeBenchmarking -rw-r--r-- 1 rnapier wheel 967 Oct 7 13:06 Info.plist -rw-r--r-- 1 rnapier wheel 8 Oct 7 13:06 PkgInfo -rw-r--r-- 1 rnapier wheel 111 Oct 7 13:06 data_dictionary_root_1.json -rw-r--r-- 1 rnapier wheel 110 Oct 7 13:06 data_dictionary_root_1.plist -rw-r--r-- 1 rnapier wheel 982 Oct 7 13:06 data_dictionary_root_10.json -rw-r--r-- 1 rnapier wheel 441 Oct 7 13:06 data_dictionary_root_10.plist -rw-r--r-- 1 rnapier wheel 9661 Oct 7 13:06 data_dictionary_root_100.json -rw-r--r-- 1 rnapier wheel 4219 Oct 7 13:06 data_dictionary_root_100.plist -rw-r--r-- 1 rnapier wheel 96488 Oct 7 13:06 data_dictionary_root_1000.json -rw-r--r-- 1 rnapier wheel 37730 Oct 7 13:06 data_dictionary_root_1000.plist -rw-r--r-- 1 rnapier wheel 965597 Oct 7 13:06 data_dictionary_root_10000.json -rw-r--r-- 1 rnapier wheel 233071 Oct 7 13:06 data_dictionary_root_10000.plist -rw-r--r-- 1 rnapier wheel 11655908 Oct 7 13:06 data_dictionary_root_100000.json -rw-r--r-- 1 rnapier wheel 3343077 Oct 7 13:06 data_dictionary_root_100000.plist $ file *.plist Info.plist: Apple binary property list data_dictionary_root_1.plist: Apple binary property list data_dictionary_root_10.plist: Apple binary property list data_dictionary_root_100.plist: Apple binary property list data_dictionary_root_1000.plist: Apple binary property list data_dictionary_root_10000.plist: Apple binary property list data_dictionary_root_100000.plist: Apple binary property list