在这个 Ruby 1.8.7 应用程序中,YAML.load
需要对 YAML 进行反序列化(使用 完成),因为现有数据存储在许多相对较小的 YAML 文档中,但这是一个性能瓶颈。
有没有更好的方法或图书馆?升级到 ruby 1.9 不是一种选择。
在这个 Ruby 1.8.7 应用程序中,YAML.load
需要对 YAML 进行反序列化(使用 完成),因为现有数据存储在许多相对较小的 YAML 文档中,但这是一个性能瓶颈。
有没有更好的方法或图书馆?升级到 ruby 1.9 不是一种选择。
我不是专家,但如果您可以将 YAML 文档转换为 Marshal 文档,然后Marshal.load
在应用程序中使用,它应该会快得多。我前一阵子用这个要点来比较 YAML 和 Marshal 的性能。
我没有找到办法做到这一点。我尝试通过字符串操作将 YAML 转换为 JSON,然后使用 Yajl 和 OJ 等快速 JSON 解析器对其进行解析,但是将 YAML 转换为 JSON 的开销已经比实际解析 YAML 的时间长。
如果某个聪明的人真的花很多时间来做这件事,我的转换脚本可能没有那么快,但是当我意识到即使我优化自己的脚本,它仍然无法击败之后,我很早就放弃了YAML 解析时间显着足以保证整个方法。
根据这个实验,在 1.8.7 下使用 ZAML 会比 YAML 解析器更快。