2

在这个 Ruby 1.8.7 应用程序中,YAML.load需要对 YAML 进行反序列化(使用 完成),因为现有数据存储在许多相对较小的 YAML 文档中,但这是一个性能瓶颈。

有没有更好的方法或图书馆?升级到 ruby​​ 1.9 不是一种选择。

4

3 回答 3

2

我不是专家,但如果您可以将 YAML 文档转换为 Marshal 文档,然后Marshal.load在应用程序中使用,它应该会快得多。我前一阵子用这个要点来比较 YAML 和 Marshal 的性能。

于 2012-07-06T11:48:45.330 回答
1

我没有找到办法做到这一点。我尝试通过字符串操作将 YAML 转换为 JSON,然后使用 Yajl 和 OJ 等快速 JSON 解析器对其进行解析,但是将 YAML 转换为 JSON 的开销已经比实际解析 YAML 的时间长。

如果某个聪明的人真的花很多时间来做这件事,我的转换脚本可能没有那么快,但是当我意识到即使我优化自己的脚本,它仍然无法击败之后,我很早就放弃了YAML 解析时间显着足以保证整个方法。

于 2012-07-12T11:14:10.817 回答
0

根据这个实验,在 1.8.7 下使用 ZAML 会比 YAML 解析器更快。

于 2012-07-18T03:03:31.650 回答