방금 다음과 같은 진술을 발견했습니다. "가장 많이 차이가 나는 항목을 먼저 비교하여 compareTo의 성능을 크게 향상시킬 수 있습니다." 사실입니까? 그리고 만약 그렇다면 왜?compareTo에는 사전 실행 지연의 일종이 있습니까?
답변
몇 가지 속성을 가진 클래스를 생각해보십시오. 인스턴스를 비교하기 위해 일부 속성을 비교해야합니다. 하나를 제외한 모든 속성이 동일하면 필요한 비교의 양은 속성 비교의 순서에 따라 다릅니다. 먼저 다른 속성을 비교하는 경우 한 번의 비교로 결과를 얻습니다. 그러나 다른 속성을 마지막으로 비교하는 경우 동일한 결과를 얻으려면 n 개의 비교를 수행해야합니다.
@Kdeveloper에서 언급했듯이 성능 차이는 일괄 적으로 유사한 비교를 많이하지 않는 한 눈에 띄지 않을 수 있습니다. 하지만 다른 이점은 IMHO 논리적 순서입니다. 이렇게하면 클래스 속성 간의 논리적 관계에 대해 생각할 수 있습니다. 전반적으로 이는 무중단 최적화 (즉, 코드를 읽고 유지 관리하기가 더 어렵지는 않음)이므로 대부분의 시간을 투자 할 가치가 있다고 생각합니다.
+1 좋은 친구. 이 측면을 고려하지 마십시오. –
글쎄, 나는 그 문구가 비교할 대상이 아니라 그 속성에 관한 것일 수도 있다고 생각한다. 처음에는 객체 비교의 순서가 중요하다고 생각했지만, 그것이 당신이 말하는 것이라면 그것은 의미가 있습니다. – dhblah
사실입니까? 그리고 만약 그렇다면 왜?
글자 그대로 말해서, 아니요. compareTo
메서드는 기록에 관계없이 실행하는 데 시간이 오래 걸립니다.
특정 구현에서 전반적인 성능을 얻을 수 있다면? 확실합니다. 그러나 귀하의 질문에 대답 할 수 있으려면 상황에 대한 더 많은 맥락이 필요합니다. 먼저 가장 선택적 비교를 넣어 경우, 당신은 평균적으로 각각의 비교를 위해 적은 코드를 실행하기 때문에
하나의 속성에 대해서만 비교하면 참입니다. Péter Török의 대답을보십시오. –
예, 그것은
사실이다. 그러나 이러한 테스트가 일반적으로 매우 빠르기 때문에 많은 개체를 비교할 경우 속도 향상이 눈에 띄게됩니다 (예 : 큰 컬렉션을 정렬 할 때).
* 그러나 이러한 테스트는 일반적으로 매우 빠릅니다. * 다른 속성/필드에서 compareTo를 호출해야하는 경우 속도가 빠릅니다. 복수의 (> 2) 호출 타겟을 가지는 인터페이스 인 경우. – bestsss
그래도 일반적으로 컬렉션을 정렬하는 경우와 같이 자주 할 때만 눈에.니다. – Kdeveloper
- 1. Views 사전 실행
- 2. udp 수신 지연의 원인은 무엇입니까?
- 3. Visual Studio 2008의 사전 실행
- 4. 1 초 지연의 C# Xna 키드 다운
- 5. Java 코드에서 GCC 사전 컴파일러 실행
- 6. 목록에 있습니까? 사전? 정렬?
- 7. 기본 양식의 크기를 조정할 때 오랜 지연의 원인을 어떻게 알 수 있습니까?
- 8. 사전 내의 중첩 사전 (중첩 된 사전)
- 9. 사전?
- 10. IDictionary, 사전
- 11. 지연의 차이 <T>과 LazyInit <T>
- 12. 어떻게 ClearOS (CentOS 기반)에서 인터페이스 사전/사후/사전/사전/사후 다운을 사용할 수 있습니까?
- 13. NULL에 대한 주석 GCC의 사전 실행 및 컴파일에서의 참조 해제
- 14. 리소스 사전 코드 뒤에 실행 명령이 실행되지 않습니다.
- 15. Windows Mobile에서 탭 앤 홀드 지연의 가치를 어떻게 얻을 수 있습니까?
- 16. 사전 공격
- 17. 오픈 소스 사전 및 동의어 사전 쿼리
- 18. 사전 발음하기
- 19. 단어 사전
- 20. Android 사전
- 21. 단사 사전
- 22. IPHONE : plist에서 사전 사전 저장 및 검색
- 23. Spring.net에서 사전 주문 질문을 할 수 있습니까?
- 24. SQLite를 설치해야합니까, 아니면 ANDROID에 사전 설치되어 있습니까?
- 25. 사전 중 사전에 NSDictionaryController를 사용할 수 있습니까?
- 26. iPhone : 사전 제작 된 UISettingsView가 있습니까?
- 27. Perl에서 정규식을 사전 컴파일하는 방법이 있습니까?
- 28. OSX SL에 PyObjC가 사전 설치되어 있습니까?
- 29. jsp를 eclipse로 사전 컴파일 할 수 있습니까?
- 30. 사전 <>의 항목에 제한이 있습니까?
http://www.javapractices.com/topic/TopicAction.do?Id=10에서 구할 수 있습니까? –
어디서 찾았습니까? 제 생각에 그것은 분류에 대한 토론의 맥락에서였습니다. – unholysampler
글쎄, 그래, 알아, 그저 내가 그런 일에 대해 언급하지 않았다는 사실을 알고 싶다. – dhblah