У меня есть одна дорогостоящая функция, которая вызывается много раз, и существует очень ограниченный набор возможных значений параметра.
Код возврата функции зависит только от аргументов, поэтому очевидный способ ускорить процесс - сохранить статический кэш внутри функции для возможных аргументов и соответствующих кодов возврата, поэтому для каждой комбинации параметров дорогостоящая операция будет выполняться только один раз.
Я всегда использую этот подход в таких ситуациях, и он отлично работает, но мне просто пришло в голову, что атрибуты функции GCC const
или pure
, вероятно, могут помочь мне в этом.
У кого-нибудь есть опыт с этим? Как GCC использует атрибуты pure
и const
- только во время компиляции или во время выполнения?
Могу ли я рассчитывать на то, что GCC будет достаточно умен для вызова функции, объявленной как
int foo(int) __attribute__ ((pure))
только один раз для одного и того же значения параметра, или нет никакой гарантии, и мне лучше придерживаться подхода кеширования?
РЕДАКТИРОВАТЬ: Мой вопрос не о кэшировании / памятках / таблицах поиска, а об атрибутах функции GCC.