2013-10-08 6 views
2

클래스 데이터 일부를 노출해야하지만 매우 까다로운 영역에서 작업해야하기 때문에 자연스럽게 궁금합니다. 설계 방법을 계속 지키고 속성을 통해이 설명을 작성하거나 그것을 잊어 버리고 내 데이터를 공개하게 만드시겠습니까?D에있는 속성의 오버 헤드는 무엇입니까?

+0

공용 "인터페이스"에 대한 라이브러리 코드에서 의미가 있습니다. D exe는 연결될 수 없으므로 손상 될 인터페이스가 없습니다. D에서 주로 통계 링크 (모든 소스 코드를 사용하여 하나의 바이너리 BLOB를 컴파일)를 사용하므로 데이터 액세스를 래핑 할 많은 이유가 없습니다. 컴파일러는 무언가가 깨 졌을 때 불평 할 것입니다. 이것이 데이터 멤버 대 함수/속성의 주소를 취할 때와 다르게 행동 할 수있는 경우에만 문제가됩니다. –

답변

4

속성은 함수 호출이지만 일반적으로 인라인 될 수있는 사소한 것입니다. 적어도 최종적으로 올바른 컴파일러 설치 (gdc -O 또는 ldc의 최적화를 사용합니다. 빠른 테스트는 dmd -inline이 이 아니고 인라인이라고 표시하고 있습니다.).

지금 gdc 또는 ldc를 사용하는 경우 최종 속성은 인라인되고 최적화되므로 무료입니다. 가상 속성 함수에 대해 잘 모르겠습니다. dmd를 사용하는 경우 함수 호출에 드는 비용이 적으므로 긴밀한 루프라면 공개 필드를 사용하여 속도를 높일 수 있습니다.