엄지 손가락의 규칙은 작은 구조체를 값으로 전달하는 것이 좋으며 큰 구조체는 포인터로 처리해야한다는 것입니다.얼마나 큰 구조체를 값으로 효율적으로 전달할 수 있습니까?
제 질문은 정확히이 차단 지점입니까? 구조체를 포인터로 전달하는 것이 더 나은 상태가되기 전에 구조체가 얼마나 커질 수 있습니다.
플랫폼마다 다를 수 있지만 대략적인 견적을 제시 할 수 있습니다. 1 년 또는 2 년 전에 PPC 아키텍처에서이 사실을 파악하려고 노력했는데 놀랍게도 상당량의 데이터를 효율적으로 가치있게 전달할 수 있다는 것을 알았습니다. PPC에있는 많은 수의 레지스터로 인해 10 개의 double 값을 생각해보십시오. By 포인터는 실제로 메모리 안팎으로 더 많은 복사를 포함했습니다.
그러나 나는 지금 나는 인텔에 있고 나는 일이 다를 수 있다고 기대한다. CPU에는 전통적으로 많은 레지스터가 없지만 64 비트 또는 부동 소수점 레지스터에서는 다를 수 있습니다.
다릅니다 .... 벤치 마크해야합니다 ... –
미치가 정확합니다. 알아야 할 유일한 방법은 벤치 마크입니다. 그리고 귀하의 답변은 귀하가 테스트하는 플랫폼에 따라 다릅니다. –
내 문제는 벤치 마크 방법을 올바르게 표시하지 못한다는 것입니다. 나는 간단한 예제가 컴파일러에 의해 너무 쉽게 최적화되고 실제 사용법을 반영하지 않을 것을 두려워한다. 조숙 한 최적화를 수행하는 것은 어리석은 것처럼 보일지 모르지만, 이는 내가 불필요한 어리석은 선택을하고 싶지 않기 때문에 좋은 성능을 발휘하는 데 어려움을 겪어 왔습니다. 내 전체 API 디자인에 영향을 미치므로 나중에이 모든 것을 변경하지 않아도됩니다. –