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. 弾性検索 - 集約
- 4. 弾性検索ファセットから集約
- 5. mongodb集約ソート
- 6. AWSでホストされている.NETアプリケーションのCPU集約型タスクのスケーリング
- 7. brew検索でローカルタップはどこで検索されますか?
- 8. 弾性検索における集約
- 9. 弾性検索:集約したngramフィルタ
- 10. Sphinx Search - マルチインデックス検索対クライアントプログラム集約
- 11. Mongodb Morphia集約の検索一致
- 12. 弾性検索 - トピック別集約
- 13. この関係は、集約、合成など何かですか?
- 14. ASP.net WebFormsはCPU集約型プラットフォームですか?
- 15. コレクションに対するアクション(ソート、制限、検索など)
- 16. Mongodb - 検索クエリで集約テキスト検索を使用する方法
- 17. Elasticsearchで集約中にOR検索を行うには?
- 18. どのようにタスクをCPUにスケジュールできますか?
- 19. 弾性の検索集約巨大なバケツ
- 20. モンゴDbの:$検索(集約)/ 2つの異なるデータタイプ
- 21. 検索タスク(ssis)
- 22. CPU集約型COMの分散処理
- 23. 弾性検索:入れ子型フィールド内のフィールドの集約
- 24. どうすればmongodbに集約できますか? "juir"、 "mobinumber":
- 25. grep検索はどのファイルですか?
- 26. MongoDB集約クエリをソートする
- 27. mongodb 3.2検索でのJavaドライバ集約whith
- 28. 地図上の弾性検索集約 - 各キーで
- 29. MacでCPU集約型クラスを見つけるには?
- 30. 次のピボット句で使用する集約関数はどれですか?
CPUを集中的に使用していると思われることを綴っている場合は、役立つかもしれません。 –