Я хотел бы оценить производительность использования константного кеша для некоторой статической функции внутри кеша. Итак, у меня есть что-то вроде этого:
class Foo {
static double cost(int factor) { <moderately complex function> };
// Other stuff using the cost() function
};
И я хотел бы сравнить с альтернативной версией, такой как эта:
class Foo {
private:
static double _cost(int factor) { <same function as before> };
static const double cost_cache[MAX_FACTOR] = ???;
public:
static double cost(int factor) { return cost_cache[factor]; };
// Other stuff
}
Способом инициализировать мой массив cost_cache способом, эквивалентным
for (int idx = 0; i < MAX_FACTOR; ++i)
cost_cache[idx] = _cost(idx);
В функциональном языке высокого уровня я бы использовал примитив карты. Как мне правильно инициализировать это в С++ 11 (или С++ 14?) Я видел другие сообщения, посвященные аналогичным вопросам, например Инициализация частного члена static const array, но его решение неприменимо в моем случае, я не могу привести 10k значений дословно в источнике.
Я использую clang++