:Java를 통한 인스턴스 메소드 호출 Reflection/Scala Reflection : 어느 것이 더 빠릅니까? 간단한 클래스 정의에 대한
class Example {
def r() = Random.nextLong() + Random.nextLong() //I'm using scala utility class to be succinct
}
이 r()
를 호출하는 2 가지 방법이있다 "FN"두 클래스 "예"와 함수 이름은 "호출의 오버 헤드를 최소화하는 (동적하지만, 이미 컴파일 알려진 경우 fn "반복적으로) : Java Reflection & 스칼라 리플렉션.
자바 리플렉션에는 훨씬 간단한 API가 있습니다. Class.getMethodWithParameterType을 사용하여 반사 방법을 얻고 즉시 Example
클래스의 모든 인스턴스에 적용 할 수 있습니다.
스칼라 반영이 더 복잡합니다. Example
클래스의 모든 인스턴스에 대해 인스턴스 미러를 먼저 확보 한 다음이를 사용하여 메소드를 호출해야합니다.
놀라운 점은 그러한 복잡성이 있더라도 스칼라 반사가 더 빠를 것 같습니다 (비교는 Scala TypeTags and performance 및 Faster alternatives to Java's reflection의 답변 참조). 아무도 내 추측을 확인할 수 있습니까? 이 격차의 원인은 무엇입니까?
통찰력을 가져 주셔서 감사합니다.
수십억 번 방법을 호출해야하는 경우가 아니라면 조기 최적화입니다. 프로파일 링을 통해 실제로 문제가 있는지 확인할 때까지는 걱정하지 마십시오. 그것은 중요하지 않을 것입니다. –
둘 다 백업으로 구현 중이지만 프로파일 링 결과가 다른 사람의 관찰과 일치하는지 알고 싶습니다. – tribbloid