2

リンクの長いリストをクロールし、ページをダウンロードし、 xpath クエリを使用して html 要素を検索し、取得した情報の一部を mysql データベースに保存するアプリケーションを作成しています。マルチスレッド ソリューションを使用して、サーバーを最大限に活用し、遅延の影響を排除しています。

ほとんどのアプリケーションは csharp と Java を使用して作成し、Web アプリケーションは asp.net/c# を使用して作成しています。

私が聞きたいのは、パフォーマンスの観点から Node.js を検討する価値があるかどうかです。つまり、スループットが最も重要な要素です。Node.js の移植性とクロス プラットフォームが向上したことも理由の 1 つですが、私にとってはパフォーマンスの方が重要です。

4

1 に答える 1

0

アプリケーションのボトルネックは、コードではなくネットワーク (HTTP または MySQL) にあると思います。

上下にかかわらず、Node.js はシングルスレッドであり、メッセージ キューに基づいており、すべての「メッセージ」が完了すると終了します。すべての I/O はスレッド プールで待機されます (推奨されない同期メソッドを使用しない限り)。

あなたのケースに関するいくつかのこと:

  • プロセッサ/スレッドを簡単かつ完全に制御することはできませんが、同時ジョブの数を自分でいつでも制限できます
  • 同時実行性がまったくないため、同時実行性について心配する必要はありません
  • Node.js のすべての API は合理化された I/O を念頭に置いて設計されています。C# よりも、Web クローラーを作成するコードの 20 ~ 50% (行数) しか記述できません。
  • Node.js には XML ライブラリが組み込まれていません。NPM でいくつか見つけることができます。
  • JavaScript はインタープリター言語であり、コードは C# よりも低速です。しかし、あなたは I/O に重点を置いているので、それほど遅くなるべきではないと思います
  • Node.js で JavaScript をデバッグするのは大変ですが、Web クローリングもそれほど複雑ではありません。

私は Node.js でいくつかの単純な Web クローラーを作成しました。ぜひ試してみることをお勧めします。

于 2014-01-07T08:43:38.213 に答える