3 分•作者: fypanto•大约 1 个月前
libfyaml 1.0.0-alpha7 版本新增了一个可选的透明解析缓存,用于重复读取稳定的 YAML/JSON 文件。
它并不会使解析器本身的速度提升数百倍。在缓存命中时,libfyaml 会将通用内存池映射到内存中,并直接使用它,而不是解析文件。由于通用子系统的设计,它甚至避免了重定位,并且在具有 ASLR(地址空间布局随机化)的 64 位系统中也能正常工作。
使用 Python 绑定在大小为 427.5 MB 的 AllPrintings.json 文件上运行的基准测试:
- 缓存关闭:16.98 秒,+13.4 GB RSS
- 冷缓存:22.45 秒,+13.4 GB RSS
- 热缓存:35.9 毫秒,+1.0 MB RSS
这在热缓存路径上比正常解析快了大约 473 倍,并且内存增量要小得多。还要注意 RSS 几乎为零;通用内存池中的数据甚至没有被调入。
这主要用于启动/配置/数据加载等工作负载,在这些场景中,会重复读取相同的大型 YAML 或 JSON 文件。
基准测试提交:
<a href="https://github.com/pantoniou/libfyaml/commit/f150432b36e409a4682ca5a2718b73e867d3600d" rel="nofollow">https://github.com/pantoniou/libfyaml/commit/f150432b36e409a...</a>