根据官方文档(https://pypi.org/project/jsonslicer/),Json Slicer 的基本配置产生 586.5K 对象/秒,ijson 与 Python 在后端产生 32.2K 对象/秒,而 ijson使用 C 后端 (ijson.yajl2_cffi) 产生 75.7Kobjects/sec。
当我在 5GB 大小的深度嵌套 JSON 文件上使用这两个库时,预计 Json Slicer 作为 YAJL ( https://lloyd.github.io/yajl/ ) 上的包装器将比使用纯 Python 的 ijson 执行得更快执行。但是,Json Slicer 花费的时间是 607.8014905452728 秒,而 ijson 花费了 308.19292974472046 秒。
根据各种来源(https://lpetr.org/2016/05/30/faster-json-parsing-python-ijson/,http://explique.me/Ijson/),带有 C 后端的 ijson 应该比使用纯 Python 后端。但是,带有 C 后端的 ijson 花费的时间是 2016.68796280378929 秒。
在不同情况下对不同大小的不同 Json 文件集多次运行期间观察到此行为。
我的系统配置是带有 20GB RAM 的 Intel i7。执行脚本期间未使用多处理。
请问有人可以解释这种奇怪行为的根本原因吗?也请让我知道这个问题的解决方案。