Я пытаюсь оптимизировать свой код, чтобы ускорить вычисления и уменьшить потребление памяти. Мне нужно хранить данные за год и стоимость. В настоящее время я использую фиксированные массивы для хранения значений.
Например, у меня был бы целочисленный массив:
integer[0] = 0,
integer[1] = 200,
integer[2] = 0,
integer[3] = 0,
integer[4] = 200,
integer[5] = 0,
...
integer[99] = 0
Где integer[0] = 0 означает, что в 2015 году стоимость составляет 0 долларов США, integer[1] = 200 означает, что в 2016 году стоимость составляет 200 долларов США и так далее. Поскольку у меня есть миллионы таких массивов, хранящихся в памяти и используемых для вычислений, я хочу свести к минимуму влияние памяти и производительности.
Чтобы уточнить, я использую данные для построения графиков. Как только я присваиваю затраты годам, я суммирую массивы на основе серий объектов, частью которых они являются. Затем я отображаю их в столбчатой диаграмме с накоплением.
Есть ли лучший способ хранения моих данных? Я рассматриваю список ключей и значений, поэтому я храню только ненулевые затраты и год, но я не знаю, сильно ли это поможет.
costByYear[2016]
имеет больше смысла, чемcostByYear[1]
. 29.07.2015GetHashCode
для поиска нужного сегмента и вызовахEquals
для всех ключей в этом сегменте. 29.07.2015costByYear[2016]
), вы можете сделать индексирование массива вполне читаемым с помощьюcostByYear[2016-baseYear]
. 29.07.2015short
вместоint
, чтобы уменьшить потребление памяти. Если вы хотите уменьшить его еще больше, вы можете сжать числа, но тогда производительность также может снизиться. 30.07.2015