self.column_name.to_date慢?

时间:2012-09-21 15:04:13

标签: ruby-on-rails ruby

我想知道这是一个错误还是只需要忍受它?!

在Windows上运行ruby 1.9.2(Rails 3.0.1)。检查更新版本的更新日志以查看是否有关于它的提及但找不到任何内容。

样品:

def same_Day?
  self.from.to_date.eql?(self.to.to_date)
end

慢很多
def same_Day?
  Time.at(self.from.to_i).eql?(Time.at(self.to.to_i))
end

为什么to_date需要这么多时间?

1 个答案:

答案 0 :(得分:1)

您需要检查源代码才能找到它。存储在数据库中的任何日期时间都应该被解析并返回ActiveSupport::TimeWithZone。这是通过调用self.to获得的。 ActiveSupport::TimeWithZone的{​​{1}}方法只不过是to_date

当您查看self.to.time.to_date方法时,它比to_i方法更复杂。

请参阅https://github.com/rails/rails/blob/master/activesupport/lib/active_support/time_with_zone.rb

反正。如果您想100%确定哪种方式更快,则必须执行基准测试。我的简单测试只在to_date中显示,第一种方式应该比将日期转换为整数然后比较它们更快。