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 に答える