現在、Webクローラを組み込んだカスタム検索エンジンを開発中です。何らかの理由で私はマルチスレッドにならないので、これまでのインデクサはシングルスレッドでコード化されていました。今私は構築しているクローラーと小さなジレンマを持っています。誰がより良いと推薦することができますか?1ページをクロールしてインデックスを作成するか、1000+ページとキャッシュをクロールしてインデックスを作成しますか?Webクローラを構築する
答えて
何の面で?スピードの点では、私は目に見えない違いを見出すことはできません。堅牢性(致命的な障害からの回復)の面では、クロールするたびに各ページのインデックスを作成する方がよいでしょう。
あなたがクローラを真剣に考えているならば、私はマルチスレッド化を強くお勧めします。基本的には、少なくとも1つのインデクサーと少なくとも1つのクローラー(潜在的に両方のクローラーの可能性があります)を常時稼働させたい場合があります。とりわけ、これにより、起動およびシャットダウンのオーバーヘッド(例えば、データ構造の初期化および解放)が最小限に抑えられる。
ネットワークは低速です(CPUに対して)。クローラを並列化することで大幅な速度向上が見られます。それ以外の場合、アプリはネットワークI/Oが完了するのを待っている時間の大半を費やします。複数のスレッドを使用してIOをブロックするか、非同期IOを持つ単一のスレッドを使用することができます。
また、ほとんどの索引付けアルゴリズムは、一度に1つの文書を索引付けする場合に比べて、文書のバッチで優れたパフォーマンスを発揮します。
スレッドを使用していないことは問題ありません。 しかし、まだパフォーマンスが必要な場合は、非同期IOを処理する必要があります。 私はBoost.ASIO link textをチェックアウトすることをお勧めします。非同期IOを使用すると、あなたのジレンマは重要ではないので、「無関係」になります。また、ボーナスとして、スレッドを使用することに決めた場合、Boost.Asioにマルチプルスレッドを問題に適用することは簡単です。
ありがとう、私はそれを試してみるかもしれない –
mybeこれに見ることができます: http://code.google.com/p/driller-cpp-web-crawler/ – user63898
- 1. oauth2を使用してWebサイト用のPythonクローラを構築する方法
- 2. 私はどのようにしてJavaを使用してWebクローラを構築するのですか
- 3. AnyCpuのWebサイトを構築する
- 4. イメージWebサーバーを構築するには?
- 5. perl Webサービスインフラストラクチャを構築する方法
- 6. REST Webサービスを構築する
- 7. バックリンクレポートWebサイトのクローラ?
- 8. クローラのデータ構造
- 9. 上に構築するWebプラットフォーム
- 10. WebクローラAmazon get span-Element
- 11. Hadoop MapReduceベースのWeb Javaクローラ
- 12. Webサービスを構築する方法を理解する
- 13. web deployパッケージ構築の問題
- 14. Webサイトの構築 - Rubyのベストプラクティスとアーキテクチャ
- 15. EclipseリンクのWebプロジェクトjavaの構築パス
- 16. Webベースのiphone/ipadシミュレータ/エミュレータの構築
- 17. TFSエージェント不足しているwebアプリケーションを構築する
- 18. Cocoaを使用してHTTP Webサーバーを構築する
- 19. SignalRを使ってWebアプリケーションを構築する
- 20. SquarespaceでA-Frameを使ってWebVR Webサイトを構築する
- 21. Flaskを使ってオフラインWebアプリケーションを構築するには?
- 22. Python Flaskを使用してプログレッシブWebアプリケーションを構築する
- 23. msbuildを使用してWebアプリケーションを構築する
- 24. Mavenを使用してJava Web Startアプリケーションを構築する
- 25. ポートWeb Scraper/Webクローラをモバイルデバイスに接続しますか?
- 26. フォーム入力要素を構築するクラスを構築する
- 27. 私のnetbeans Webアプリケーションのディレクトリ構造を再構築
- 28. Webサービス用の配列を動的に構築する
- 29. MS Web Developer 2010 ExpressのWCFサービスライブラリを構築する
- 30. firebaseとWebビデオチャットを構築する方法
あなたの「小さなジレンマ」はなんですか? – lothar
なぜあなたはスレッド化していませんか?それを理解するにはあまりにも怠惰であることは、不自由な言い訳なので、そうでないことを願っています。 – Louis
怠け者ではない、私はsqliteからリンクされているスレッドの欠点について記事を読んだが、強く与えられたので、今度はマルチスレッドに入る、シングルスレッドインデクサー+マルチスレッドクローラー。お返事ありがとうございました –