2012-09-21 3 views
0

이것이 버그인지 아니면 그냥 그걸로 살아야하는지 궁금합니다.self.column_name.to_date가 느림?

Windows에서 Ruby 1.9.2를 실행 중 (Rails 3.0.1). 최신 버전의 변경 내역을 확인하여 언급 된 내용이 있는지 만 알 수는 없습니다.

샘플 :

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

는 왜 그렇게 많은 시간이 더 필요 TO_DATE 모든 단서

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

보다 훨씬 느린가요?

+0

두 번째 방법은 이름에서 알 수 있듯이 시간 부분을 포함하기 때문에 어쨌든 작동하지 않습니다. 'to_date'는 절대로 나에게 느린 적이 없었습니다. –

+0

여기에 더 나은 예를 설정하는 것은 어렵습니다. 나는 수백 개의 약속을 가지고 있으며 나머지 컨트롤러를 통해 ExtJS로 내용을 옮깁니다. 필자는이 same_day 메소드를 사용하며 샘플에서 2.5 초에서 1 초 사이의 시간차가 발생합니다. 다른 모든 코드를 검사하고이 부분을 격리했습니다. – YvesR

+0

self.from과 self.to는 어떤 수업입니까? –

답변

1

이것을 찾으려면 소스 코드를 확인해야합니다. 데이터베이스에 저장된 datetime은 파싱되어 ActiveSupport::TimeWithZone으로 반환되어야합니다. 이것은 self.to으로 전화하시면됩니다. ActiveSupport::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에서만 실행합니다. 첫 번째 방법은 날짜를 정수로 변환 한 다음 비교하는 것보다 빠릅니다.