2017-12-18 8 views
-1

Method 클래스에있는 isAnnotationPresent 메서드를 살펴보면 매개 변수를 사용하고 nullity를 확인하여 getDeclaredAnnotation을 호출합니다.isAnnotationPresent 대 getDeclaredAnnotation! = null

getDeclaredAnnotation(...) != null 대신 isAnnotationPresent(...)을 사용하여 특수 효과가 있는지 확인하면 성능에 영향을 줍니까?

+0

어떤 방식 으로든 눈치 채지 못할 것입니다. 'isAnnotationPresent()'를 호출하는 것으로, 당신이하려고하는 것을 가장 잘 묘사 한 메소드를 사용하십시오. 나는 downvoted했습니다. 왜냐하면 당신은 스스로 이것을 테스트 할 수 있었기 때문에, 일종의 ** research ** 일을 했었습니다. 그러나 정말로 그렇게해서는 안됩니다. [조숙 한 조심주의] (https://softwareengineering.stackexchange.com/q/80084/202153). – Andreas

답변

0

항상 필요한 방법 (예 : 여기 isAnnotationPresent)을 사용해야합니다. 그것은 가독성을 위해 분명히 더 좋으며 때로는 속도면에서 더 좋을 수도 있습니다.

코드를 보지 않고 가장 간단한 구현은 무엇입니까? 분명히 getDeclaredAnnotation(...) != null을 테스트하십시오. 그래서 무엇을 잃을 수 있습니까? 하나의 메소드 호출. 메소드 호출은 비용이 많이 들지만 중요하다면 어디서나 인라인으로 처리되므로 기본적으로 무료입니다. 너는 단지 잃을 수 없다.

이 경우, 당신은 아마 둘 중 하나를 이길 수없고, 가능하다면, 측정하기 힘들 것입니다.

그러나 컬렉션의 경우도 마찬가지입니다. 대 size() == 0입니다. 후자는 일부 멋진 콜렉션 (예 : 일부 재미있는 연결 목록 또는 데이터베이스에 의해 지원되는 콜렉션)에 대해 훨씬 더 많은 비용이들 수 있습니다. 실제로 SELECT COUNT(*) ...IF EXISTS(...)보다 느립니다.

그래서 더 간단하고 읽기 쉬운 솔루션을 찾으십시오. 성능면에서는 대개 상관 없으며, 그렇다면 아마 얻을 수 있습니다.

알고리즘을 복잡하게 만드는 데 필요한 유일한 최적화가 있습니다 (예 : 버블 정렬을 원하지 않는 경우).