NodeJS, promessas e desempenho
Minha pergunta é sobre desempenho no meu aplicativo NodeJS ...
Se meu programa executar 12 iterações de 1.250.000 cada = 15.000.000 iterações juntas - serão necessários servidores dedicados na Amazon no seguinte tempo para serem processados:
r3.large: 2 vCPU, 6,5 ECU, 15 GB de memória -> 123 minutos
4.8xlarge: 36 vCPU, 132 ECU, 60 GB de memória -> 102 minutos
Eu tenho algum código semelhante ao código abaixo ...
start();
start(){
for(var i=0; i<12; i++){
function2(); // Iterates over a collection - which contains data split up in intervals - by date intervals. This function is actually also recursive - due to the fact - that is run through the data many time (MAX 50-100 times) - due to different intervals sizes...
}
}
function2(){
return new Promise{
for(var i=0; i<1.250.000; i++){
return new Promise{
function3(); // This function simple iterate through all possible combinations - and call function3 - with all given values/combinations
}
}
}
}
function3(){
return new Promise{ // This function simple make some calculations based on the given values/combination - and then return the result to function2 - which in the end - decides which result/combination was the best...
}}
Isso é igual a 0,411 milissegundo / 441 microssegundo pér iteração!
Quando olho para o desempenho e o uso de memória na barra de tarefas ... a CPU não está funcionando a 100% - mas mais como 50% ... o tempo todo? O uso da memória começa muito baixo - mas MANTENHA crescendo em GB - a cada minuto até o término do processo -, mas a memória (alocada) é lançada pela primeira vez quando pressiono CTRL + C no Windows CMD ... então é como a coleta de lixo do NodeJS não funciona da melhor maneira - ou pode ser simples o design do código novamente ...
Quando executo o aplicativo, uso a memória, como:
nó --max-old-space-size = "50000" server.js
Diga-me tudo o que eu posso fazer - para tornar meu programa mais RÁPIDO!
Obrigado a todos vocês!