많은 비용이 소요되는 함수 하나가 여러 번 호출되며 매개 변수에 사용할 수있는 값의 집합이 매우 제한되어 있습니다.
함수 반환 코드는 인수에만 의존하므로 가능한 인수 및 해당 반환 코드에 대해 함수 내에 정적 캐시를 유지하는 것이 가장 쉽습니다. 따라서 매개 변수의 모든 조합에 대해 값 비싼 연산은 한 번만 수행됩니다 .
나는 항상 이런 상황에서이 방법을 사용하고 있지만 잘 작동하지만 GCC 함수 속성이 const
또는 pure
일 때이 문제를 해결할 수 있다고 생각됩니다.GCC 함수 속성 대 캐싱
아무도이 경험이 있습니까? GCC가 pure
및 const
속성을 사용하는 방법 - 컴파일 타임이나 런타임에만?
나는, 함수를 호출 할만큼 현명하게 GCC에 의존 동일한 매개 변수 값을 한 번만
int foo(int) __attribute__ ((pure))
로 선언 또는 보장은 전혀 없다 내가 더 나은 캐싱 방식에 충실 할 수 있습니까?
EDIT : 제 질문은 캐싱/메모/룩업 테이블에 관한 것이 아니라 GCC 함수에 대한 것입니다.
순수하지 않습니다. 그러나 const는 좋아 보인다. –