0

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

在 Windows (Rails 3.0.1) 上运行 ruby​​ 1.9.2。检查较新版本的变更日志,看看是否有提及它但找不到任何东西。

样本:

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 需要这么多时间?

4

1 回答 1

1

您需要检查源代码才能找到答案。存储在数据库中的任何日期时间都应该被解析并返回为ActiveSupport::TimeWithZone. 这是你通过调用得到的self.toActiveSupport::TimeWithZoneto_date方法无非就是self.to.time.to_date

当你检查to_i方法时,它比to_date方法更复杂。

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

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

于 2012-09-21T15:29:58.883 回答