In questo momento sto raccogliendo informazioni sulla memoria su un server node.js ogni 100 secondi. Voglio mostrare le informazioni sull'utilizzo della memoria come un grafico sul front-end.
const mem = {
heapTotals: [],
heapUseds: [],
maxHeapTotal: 0,
maxHeapUsed: 0
};
setInterval(function () {
const m = process.memoryUsage();
mem.heapTotals.push(m.heapTotal);
mem.heapUseds.push(m.heapUsed);
if (m.heapTotal > maxMem.maxHeapTotal) {
mem.maxHeapTotal = m.heapTotal;
}
if (m.heapUsed > maxMem.maxHeapUsed) {
mem.maxHeapUsed = m.heapUsed;
}
}, 100000);
Non lo stiamo memorizzando in un db, o qualcosa, solo nella memoria. Certo, continuiamo a spingere su quell'array ogni 100 secondi, inizierà a crescere nel tempo se il nostro server è attivo per un po '.
Sto cercando un algoritmo divertente che possa essere utilizzato ogni 100 secondi per perfezionare l'array, in modo che non contenga più di 2000 voci.
Ho bisogno di un modo per passare attraverso l'array esistente, rimuovere gli elementi passati, ma fare la media con i loro pari, in modo che il grafico sia piuttosto scorrevole.
Dire che ho questo:
[3,3,5,5,6,7,9,2,3,5,3,6,4,8,8,4,4,5] (18 items)
Lo ridurrebbe prendendo ogni 3 ° elemento e facendo una media e due prima di esso, quindi sarebbe:
[(3+3+5)/3,(5+6+7)/3,(9+2+3)/3,(5+3+6)/3,(4+8+8)/3,(4+4+5)/3]
Qualcosa del genere. Tuttavia questo non è davvero un algoritmo completo. Qualcuno sa qual è il modo giusto / migliore per fare ciò in modo che il grafico sia accurato, ma non va oltre le 2000 voci di array ecc?