2012-10-27 2 views
3

나는 (모든 프레임 ...) 반복적으로 호출 될 draw 메소드를 가지고있다. 이 방법 안에는 로컬로 정의 된 변수 (약 20 개)가 있습니다. 이 구조체를 내부에 넣고 해당 구조체에 대한 포인터를 메서드의 매개 변수로 전달하는 것을 고려하고 있습니다. 이것은 간접 작업이 변수를 스택에 배치하는 것보다 빠르기를 바란다.스택에 대한 포인터 간접 할당 비용은 얼마입니까?

여기에 일반적으로 적당한 성능 차이가 있습니까?

+1

시도해 보셨습니까? –

+0

지금 함께 정리해 보면 긴 과정이지만, 나는 자신을 교육하러 갈 것이라고 생각했습니다. ;) –

답변

5

(적어도 x86 프로세서에서) 스택에 변수를 배치하는 것은 매우 빠릅니다. x86 프로세서에서 스택을 사용하면 함수의 시작 부분에서 한 번 씩 빼고 마지막에 한 번 더 추가합니다. 더 많은 변수를 추가하면 숫자가 변경되고 더 느려지지는 않습니다. 간접 참조를 사용하는 경우에는 연산이 조금 더 많을 수 있으므로 조금 느릴 수 있습니다. 그러나 컴파일러가 해당 구조체 포인터를 레지스터에 넣는다면 아마도 빠른 로딩 및 저장과 같을 것입니다.

어쨌든 마이크로 최적화이기 때문에 코드를 더 간단하게 만들 수 있습니다. 프로파일 링 한 후에 병목 현상을 확인한 후에 만 ​​고려해야합니다.

+0

네, 구조체가 호출을 통해 어떤 상태를 유지할 것으로 예상되는 경우에만이 작업을 수행 할 수 있습니다. –

관련 문제