Ruby on Rails3:如何防止数值在ActiveRecord中转换为String(to_i和to_f太慢)?

时间:2013-10-25 08:14:36

标签: ruby ruby-on-rails-3 rails-activerecord

我正在使用Ruby on Rails 3.0.3,ruby 1.8.7,PostgreSQL 9.1.9来自我的Debian stable(6.0.7)的标准存储库。我通过获取一个月的数据,使用“连接”连接多个表然后解析所有数据来创建报告。数据类型是字符串,整数和浮点数。我正在聚合SQL请求,因此使用count()生成一些字段。当我在控制器中解析所有这些数据时,我需要将to_i和to_f调用到所有数字字段。该报告需要几分钟才能完成。 SQL部分只需几秒钟,其余部分都在解析数据。我注意到最大的时间消费者是代码的一部分,我将每个数字字段从String转换为适当的数字类型(使用to_i或to_f)。有没有办法保留值的原始数值类型?

我已经阅读了关于ruby 1.9超过1.8的改进,所以我去部署了ruby 1.9.3p194(2012-04-20修订版35410),以便查看解析是否会变得更快,但遗憾的是,它没有。

我理解如果不能对计算值这样做,例如: G。在使用SQL count()时,但至少对于静态值是可能的吗?

以下是相关的代码部分:http://pastebin.com/index/tzWsQZtz

任何建议都将受到高度赞赏。

0 个答案:

没有答案