NodeJS, обещания и производительность
Мой вопрос касается производительности в моем приложении NodeJS ...
Если моя программа запускает 12 итераций по 1.250.000 каждая = 15.000.000 итераций вместе - для обработки потребуется выделенный сервер в Amazon:
r3.large: 2 vCPU, 6,5 ECU, 15 ГБ памяти -> 123 минуты
4.8xlarge: 36 vCPU, 132 ECU, 60 ГБ памяти -> 102 минуты
У меня есть код, похожий на код ниже ...
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...
}}
Это равно 0,411 миллисекунды / 441 микросекунды за итерацию!
Когда я смотрю на производительность и использование памяти на панели задач ... ЦП не работает на 100% - но больше похоже на 50% ... все время? Использование памяти начинается очень низко - но KEEPS растет в ГБ - каждую минуту до завершения процесса - НО (выделенная) память сначала освобождается, когда я нажимаю CTRL + C в Windows CMD ... так что это похоже на сборку мусора NodeJS не работает оптимально - или может быть просто дизайн кода снова ...
Когда я запускаю приложение, я использую память как:
узел --max-old-space-size = "50000" server.js
ПОЖАЛУЙСТА, расскажи мне все, что ты можешь сделать, чтобы сделать мою программу БЫСТРЕЕ!
Большое спасибо всем вам!