私の質問は、私のNodeJSアプリでのパフォーマンスについてです...NodeJS、約束や性能
私のプログラムは、すべて一緒に、各= 15.000.000回の反復1.250.000の12反復を実行した場合 - それはアマゾンで、専用のサーバーを取りますプロセスに時間を次
r3.large:2のvCPU、6.5 ECU、15ギガバイトのメモリ - > 123分
4.8xlarge:36のvCPU、132 ECU、60ギガバイトのメモリ - > 102分
この
私は以下のコードにsimilairいくつかのコードを持っている...
は、反復あたり0.411ミリ秒/ 441マイクロ秒に等しいです!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... }}
私はタスクバーのパフォーマンスとメモリ使用量を見ています... CPUは100%で実行されていませんが、50%のように全時間実行されていますか? メモリ使用量は非常に低くなりますが、KEEPSはGB単位で増加します(処理が完了するまで毎分) - ただし、Windows CMDでCTRL + Cを押すと(割り当てられた)メモリが最初に解放されます。コレクションに最適な動作しませしません - または再びコードのシンプルなデザインかもしれ...
私はのようなメモリOPTを使用するアプリケーションを実行します。
ノード--max-古いです-space-size = "50000" server.js
私ができることすべてを教えてください - 私のプログラムをもっと速くしてください!
ありがとうございました!
:
はまた、これらの回答を参照してください。ループをスピードアップする方法に焦点を当てるのではなく、アプリケーションをかなり再構成する必要があるように聞こえ始めます。あなたのアプリが何をしているのかについて、より多くの情報を提供できますか?なぜあなたはその多くの約束を必要としていますか? 'function3'は何をするのですか? – robertklep
まず最初に、Nodeに新しい...だから、設計上の誤りは非常に可能かもしれません!要するに...プログラムはDBにアクセスしたり、ディスクに書き込んだり、多くの繰り返しを要求したりすることはありません...単純な配列やオブジェクトで単純に動作します。多くのデータで...これはDBからフェッチされています - これ前のステップで...なぜ私が約束を使用しているかは、ノードiが設計上非同期であるためです - そして、それ?私は、.Net/C#のような同期コードを使って作業していました... – PabloDK
約束の中の折り返し計算は、必ずしもそれがずっと良くなるとは限りません。あなたがgoogle for _ "node heavy computation" _を使っていれば、単一のNodeプロセスより多くのCPUリソースを利用して、異なる子プロセスで計算を分割する方法についての良い指針を見つけることができます。また、あなたに役立つ[様々なモジュール](https://npms.io/search?term=computation+parallel)もあります。 – robertklep