У меня относительно дорогая операция извлечения данных, для которой я хочу кэшировать результаты. Эта операция вызывается из const
методов, примерно так:
double AdjustData(double d, int key) const {
double factor = LongRunningOperationToFetchFactor(key);
return factor * d;
}
Я бы хотел, чтобы AdjustData
остался const
, но я хочу кешировать фактор, поэтому я получаю его только в первый раз. В настоящее время я использую mutable map<int, double>
для сохранения результата (карта имеет значение от key
до factor
), но я думаю, что использование статической области действия может быть лучшим решением - этот фактор необходим только этой функцией и не имеет отношения к остальной части класса.
Похоже, это хороший путь? Есть ли лучшие варианты? О чем я могу подумать, особенно в отношении безопасности потоков.
Спасибо
Дом