M
потом у тебя появляеться множество Z=X+Y -> память 2x
потом у тебя появляеться множество K, 0 <= k <= X+Y т.е. в худшем случае снова копия.
Итого у тебя инпут в функцию увеличиваеться внутри функции в 3 раза в худшем случае.
А вообще раз уж ты спрашиваешь про память то было бы не плохо знать что за тип данных в allS и newD и что делает
groupedFunc
.const groupedFunc = (array, groupParam) => {
// используется структура Map - ключ-значение, которое в конце преобразуется в массив
const groupedData = [
...array.reduce(
(map, item) => {
// для каждого элемента item в массиве:
// берем значение поле, которое будем суммировать
const { size, count } = item;
// берем значение ключа (поля по которому группируем)
const key = item[groupParam]
// находим существующий єлемент в мапе
const prev = map.get(key);
if (prev) {
prev.size = size; // если нашли существующий заменяем на новый
prev.count += count; // суммируем количество
} else {
map.set(key, Object.assign({}, item)); // если не нашли, то добавляем элемент в мап
};
return map;
}, new Map() // в начале пустой Map
).values() // возвращает итератор объектов, поэтому вначале поставили деструктуризацию - чтобы превратить все в красивый массив
];
return groupedData;
};
структура данных такая:
[
{
"price": 12389,
"size": 4.235825,
"timestamp": "1597583868074",
"count": 2
},
]
Таких объектов обычно не больше тысячи. Но новые данные приходят очень часто. У меня даже были мысли может надо на С++ писать отдельную математику?
А где мне еще накапливать актуальное состояние данных? Только в памяти. Мне же дальше над ними в этом же блоке работать. Вернее после того как данные обновились я их сразу в Редис скидываю.
А можно поподробнее про дамп? Если есть может статью какую то. Чтобы я быстро сделал нужные дейстия.