如何在Ruby 1.8.7中加快YAML加载速度?

时间:2012-07-06 11:25:40

标签: ruby performance serialization yaml

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

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

3 个答案:

答案 0 :(得分:2)

我不是专家,但如果您可以将YAML文档转换为Marshal文档,然后在应用程序中使用Marshal.load,那么它应该更快。我曾用this gist一段时间来比较YAML和Marshal的表现。

答案 1 :(得分:1)

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

我的转换脚本可能没有那么快,如果有人聪明地花了很多时间来做这件事,但是在我意识到即使我优化了自己的脚本之后我仍然放弃了它,它仍然不会不能大大超过YAML解析时间以保证整个方法。

答案 2 :(得分:0)

根据this experiment,使用1.8.7下的ZAML将比YAML解析器更快。