2.4.4 성능에 미치는 영향

2.4.4 성능에 미치는 영향

구조체와 이를 확장한 구조적 서브타이핑을 사용하는 것은 동적 대상으로 컴파일할 때 성능에 전혀 영향을 주지 않아요. 하지만 정적 대상에서는 접근이 대체로 더 느립니다. 일부( JVM, HL)는 일반적인 경우를 최적화하지만, 최악의 경우 동적 조회(dynamic lookup)가 필요해 클래스 필드 접근보다 몇 자릿수 더 느릴 수 있어요.

출처: Impact on Performance

본문

동적 대상에서의 성능

JavaScript, PHP 같은 동적 대상에서는 구조체와 구조적 서브타이핑을 써도 성능 저하가 없어요. 동적 대상 자체가 필드를 런타임에 동적으로 처리하기 때문이에요.

정적 대상에서의 성능

C++, Java 같은 정적 대상에서는 구조체 필드 접근이 느릴 수 있어요. JVM과 HashLink(H L)는 일반적인 케이스를 최적화하지만, 어떤 경우에는 동적 조회가 필요해져 클래스 필드 접근보다 훨씬 느려질 수 있습니다. 성능이 중요한 상황에서는 구조체 남용을 자제하는 것이 좋아요.

더 알아보기