ОК, здесь моя ситуация:
- У меня есть функция - пусть скажем
U64 calc (U64 x)
- которая принимает 64-разрядный целочисленный параметр, выполняет некоторую интенсивную работу с ЦП и возвращает 64-битное значение - Теперь, учитывая, что я знаю ВСЕ возможные входные данные (
x
s) этой функции заранее (хотя есть еще 16000), я подумал, что было бы лучше предварительно рассчитать их, а затем получить их по требованию (из массив-подобная структура). - Идеальная ситуация заключалась бы в том, чтобы сохранить их все в некотором массиве
U64 CALC[]
и получить их по индексу (сноваx
) - И вот проблема: я могу знать, каковы возможные входы для моей функции calc, но они наиболее определенно НЕ последовательные (например, не от 1 до 16000, а значения, которые могут идти как низкие как 0 и до нескольких триллионов - всегда с 64-битным диапазоном)
например.
X CALC[X]
-----------------------
123123 123123123
12312 12312312
897523 986123
etc.
И вот мой вопрос:
- Как вы их сохранили?
- Какое обходное решение вы предпочитаете?
- Теперь, учитывая, что эти значения (от
CALC
) должны будут поступать от нескольких тысяч до миллионов, в секунду, что было бы лучшим решением по производительности?
Примечание. Я не упоминаю ничего, о чем я думал, и не пытался, чтобы не отвечать на вопросы в некоторых дискуссиях типа A vs B и в основном не влиял ни на кого...