CPU集約タスクとは何と考えますか?という点では...アルゴリズム/コード(例えば、ビデオ編集のようなユースケースではない)です。理由は、NodeJSを使用しない主な理由は、私が本当に好きなものは、主にCPU集約的な仕事だということです。それで何が重要なのでしょうか?それは並べ替え、検索、グラフ横断、行列の乗算などですか?CPU集約タスク(ソート、検索など)はどれですか?
答えて
「集中型」や「高価な」という用語は相対的なものであり、CPU集約型のアクティビティは必ずしも明らかではありません。一般に、I/O以外のものはCPUです。また、I/Oはnode.jsでは非同期であるため、問題はありません。したがって、I/Oが高価であることを除いてすべてが残っています。
一般的なパターンを選択するあなたのアプローチは賢明です。並べ替え、検索、およびアルゴリズムさえ一般的には、CPUにバインドされています。もちろん、あなたはCPU使用量を排除することはできませんが、アプリケーションコードの代わりにデータベースをソートすることができれば、より良いかもしれません。
大規模なループにも注意してください。非同期イベントを発生させないループはボトルネックです。もちろん、ループを完全に回避することはできません。それらはプログラミングのための人生の事実です。あなたのループが短い場合、問題はありません。 10,000回実行するループが見つかった場合は、setTimeout、process.nextTick、または別のノードプロセスを使用してループを分割することを検討してください。
00を任意に選んだ。ループの内容によって異なります。あなたの人数は変わるかもしれません。
操作が高価であるとします。あなたはそれを修正するために何をしますか? NodeJS用のC++拡張を作成し、それをUR JSに呼び出させますか?または単に高価な作業をワーカースレッドに入れますか?または、他の何か?たぶん、別の言語でアプリを作成していますか? –
個人的には、私の最初の努力は、他のすべてのオプションが複雑さを増すため、操作を高速化することです。それが不可能な場合は、私たちが数秒で何かを見て、それを2〜4チャンクに分割するのであれば、setTimeoutを検討します。それで十分でない場合、私はワーカープロセスを試してみるでしょう。最後の手段として、私はC++拡張を検討するかもしれません。 – Brandon
webworker-threadsや同様のパッケージをチェックアウトすることができます https://npmjs.org/package/webworker-threads – Brandon
Bashスクリプトは実際にこれに入ります。私の教授はいつも、ここでLinuxの
http://hacktux.com/bash/script/efficient
私は再帰関数であると考えることができます別の例では非効率的な慣行の良い例がある
CPU
の作業を容易にする効率的なコードを書くことについて私たちにくどくどされます条件が満たされるまで継続的に自分自身を呼び出す関数です。これらは通常、多くのCPUパワーを消費します。これらの提案の多くは、組み込みエコー、関数、配列の使用など、パフォーマンスではなく、保守性/可搬性/可読性のためのものです。 – Brandon
コンピュータ上で実行されるプロセスやタスクには、オペレーティングシステムで管理されるCPUサイクル、メモリ、ディスク、ネットワークなどのさまざまなリソースが必要です(できるだけリソースを待つことなく)。
OSは、複数のプロセスに同時にリソースを使用させることによってリソース使用率を最大化しようとします。プロセスが特定の リソースを大量に要求すると、実行のボトルネック(遅延)を招く可能性があります。 プロセスは、そのリソースを使用してリソースを大量に消費すると言われています。したがって、リソース集約的な は相対的な用語です。
並べ替え、検索、グラフの横断、行列の乗算はすべてCPU操作であり、プロセスはどれくらいの頻度で実行されているかによって異なります。たとえば、trans-coding video
またはcompressing files
はCPUの処理能力がかなり高いです。なぜなら、CPUの動作がメモリやディスクの読み書きに必要以上に大きくなるからです。これらの作業を行う予定がある場合は、別の子プロセスを作成して、単一スレッドのノードプロセスを遅くしないようにするか、node clusterを作成するようにしてください。
私はワーカースレッドを使うことができましたが、非常に長く待たなければならない完了するために?だから、懸垂UI(ワーカースレッドで修正するのは難しくない)以外は、Python/Rubyが同じ計算を行うよりも遅いのでしょうか? –
これは両方で実装がどのように行われるかによって異なります。 JavaScriptとPythonはどちらもスクリプト言語です。一般的には、JavaScriptはPythonより高速です(数値集約的なケースではPythonが優れています)。ここを参照してくださいhttp://www.quora.com/Programming-Languages/Is-JavaScript-v8-faster-than-Python。 – user568109
- 1. 非CPU集約的なタスク
- 2. JavaでCPU集約型タスクを高速化できますか?
- 3. mongodb集約ソート
- 4. Sphinx Search - マルチインデックス検索対クライアントプログラム集約
- 5. ASP.net WebFormsはCPU集約型プラットフォームですか?
- 6. コレクションに対するアクション(ソート、制限、検索など)
- 7. CPU集約型COMの分散処理
- 8. 検索タスク(ssis)
- 9. MacでCPU集約型クラスを見つけるには?
- 10. JSONObject検索制約
- 11. PHPの検索結果をどのように検索/要約できますか?
- 12. データ集約型のHDでの読み書きのベストプラクティスはどれですか?
- 13. オープングラフ集約を削除するにはどうすればよいですか?
- 14. 弾性検索:集約クエリの書き出し
- 15. cakephpの集約可能な集約クエリ
- 16. Drupalサイトで検索バーを編集するにはどうすればよいですか?
- 17. ヤフーの検索結果ページへのリンクはどれですか?
- 18. ソートされたDataGridの検索
- 19. 検索ボックスにAngularを使用する(Google検索など)
- 20. MongoDB全文検索でソートする
- 21. 最適な実行タスク数はどれくらいですか?
- 22. 年齢制約の検索
- 23. MIDLETアプリケーションの保存、編集、削除、検索はどのようにすればよいですか?
- 24. DDD、別の集約からイベントを集約できますか?
- 25. CPU集約型.NETアプリケーションを並列化するための現在の最適なオプションは何ですか?
- 26. これはどのようなレイアウトの制約ですか?
- 27. Googleなどの検索エンジンでFlex RIAのコンテンツにアクセスするにはどうすればよいですか?
- 28. hibernate検索でint値の検索を実装するにはどうすればよいですか?
- 29. Googleカスタム検索API for .NETで検索するにはどうすればよいですか?
- 30. haystack検索で検索結果の数を取得するにはどうすればよいですか?
CPUを集中的に使用していると思われることを綴っている場合は、役立つかもしれません。 –