ObjC Plist 文件读取比 JSON 快?

2024-02-20

我做过这个测试项目https://github.com/danielpetroianu/FileDeserializeBenchmarking https://github.com/danielpetroianu/FileDeserializeBenchmarking查看从应用程序包中读取文件并将其反序列化的最快方法是什么。

我很惊讶地发现 Plist 文件的读取速度比 JSON 更快。由于 JSON 文件较小,我预计它会更快。

Xcode 在构建时对 Plist 文件进行了一些优化吗? 我是否做错了什么导致 JSON 反序列化需要更多时间?


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

你没有理由相信这一点。有许多因素比文件大小重要得多。

Xcode 在构建时对 Plist 文件进行了一些优化吗

是的。如果它们在资源包中,它会将它们编译为 Plist 二进制格式,在某些情况下(可能是所有情况),读取和解析速度比文本格式更快。这是在CopyPlistFile构建阶段。

构建完成后,它们的样子如下:

-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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ObjC Plist 文件读取比 JSON 快? 的相关文章

随机推荐

  • 设计和单元测试跨平台应用程序

    我正在开发一个为 Windows 构建的项目 当前 并将在未来为 darwin 构建 以下是一个快速概述 文件1 go package management type Manager interface Action1 file2 wind
  • 将 NaN 移至各自行的末尾

    我有一个像这样的数据框 0 1 2 0 0 0 1 0 2 0 1 NaN 1 0 2 0 2 NaN NaN 2 0 我想要得到的是 Out 116 0 1 2 0 0 0 1 0 2 0 1 1 0 2 0 NaN 2 2 0 NaN
  • 只有 NSMutableArray 的第一个对象存储在 NSUserDefaults 中

    我正在尝试存储 UILocalNotification 队列来解决极限问题 https stackoverflow com questions 14689661 cordova ios limit for local notificatio
  • Ruby/Rails 中的“Ago”日期/时间函数

    我想知道 Rails 中是否有一种方法可以计算时间戳 例如半分钟前 2 分钟前 1 天前等 类似于 twitter 实时日期戳的东西 我想知道 Ruby Rails 是否有用于此类日期时间转换的内置函数 您可以使用 10 minutes a
  • bitbake中SRC_URI和FILESEXTRAPATHS_prepend的区别

    为什么我们需要给出文件路径SRC URI即使我们将文件路径包含在FILESEXTRAPATHS prepend多变的 例如 SUMMARY Simple Hello application LICENSE MIT LIC FILES CHK
  • hashmap键集自动排序

    HashMap
  • 为什么 -compile(export_all) 是不好的做法?

    所有的erlang书籍似乎都说export all是不好的做法 但没有给出理由 最后 大多数模块将大部分时间都花在了compile export all 上 因为不断更新模块列表以删除辅助函数是很麻烦的 这是不好的做法吗 因为我应该关心我向
  • 如何既保存两台相机的数据又不影响其拍照速度?

    我正在使用多光谱相机来收集数据 一种是近红外光 另一种是彩色光 不是两台相机 而是一台相机可以同时获取两种不同类型的图像 我可以使用一些 API 函数 例如 J Image OpenStream 两部分核心代码如下所示 一个用于打开两个流
  • PostgresQL SQL:将结果转换为数组

    查询如下 SELECT i adgroup id i category id FROM adgroupcategories br WHERE i adgroup id IN SELECT i adgroup id FROM adgroupu
  • 将数据帧写入 postgres 数据库

    我想将 pandas 数据帧写入 postgres 表 我按如下方式连接到数据库 import psycopg2 import pandas as pd import sqlalchemy def connect user password
  • React 模块解析失败:意外的标记 (1:48)

    有人能帮我吗 我只是创建反应应用程序 然后立即启动它 然后我收到了类似这样的错误 我对 webpack 不太了解 CMD src index js 1 48 Module parse failed Unexpected token 1 48
  • 重置 Keras 层中的权重

    我想重置 随机化 Keras 深度学习 模型中所有层的权重 原因是我希望能够使用不同的数据分割多次训练模型 而不必每次都进行 缓慢的 模型重新编译 灵感来自这次讨论 https github com fchollet keras pull
  • UNIX 中“./”和“sh”的区别

    有时我发现很少有脚本是通过 sh 命令执行的 有时是通过 命令执行的 我无法理解它们之间的确切区别 请帮助我 sh file在新的 shell 进程中执行 shell 脚本文件 file在当前 shell 进程中执行 shell 脚本文件
  • 命令行终端上的乘法

    我正在使用串行终端为我们的实验室实验提供输入 我发现使用 echo 5X5 只返回一个字符串 5X5 有没有执行乘法运算的命令 是的 您可以使用bash 的内置算术扩展 https www gnu org software bash man
  • 如何解决“不支持关键字:‘元数据’”?

    我无法连接到 SQL Server 我的项目的连接字符串是
  • 使用图权重提升深度优先访问者最小生成树

    我想从具有边权重的顶点创建最小生成树 并以深度优先顺序遍历图 我可以构建图表和最小生成树 但我无法编写自定义访问者 include
  • WinHttpSendRequest 失败并显示 ERROR_WINHTTP_SECURE_FAILURE

    以编程方式与网络进行通信不是我的专业领域 但我设法通过从网上找到的示例中剪切和粘贴代码来创建 read web page 函数 并且该代码已经连续好几个月每天正常运行 碰巧的是 我工作时的主 Windows 10 电脑坏了 在等待维修时 我
  • PHP - 读取和修复大型无效 XML 文件

    我必须读取一些相当重的 XML 文件 200 MB 到 1 GB 之间 其中一些文件是无效的 让我举一个小例子
  • 为什么最终没有被调用?

    我有几个关于java中的垃圾收集器的问题 Q1 据我了解 当对象超出范围并且 JVM 即将收集垃圾时 finalize 就会被调用 我认为 Finalize 方法是由垃圾收集器自动调用的 但在这种情况下它似乎不起作用 解释是什么 为什么需要
  • ObjC Plist 文件读取比 JSON 快?

    我做过这个测试项目https github com danielpetroianu FileDeserializeBenchmarking https github com danielpetroianu FileDeserializeBe