私は、Java を使用した盗作検出フレームワークに関連するプロジェクトに取り組んでいます。私のドキュメント セットには約 100 個のドキュメントが含まれており、それらを前処理して適切なデータ構造に保存する必要があります。大量のドキュメントを効率的に処理し、ボトルネックを回避するにはどうすればよいかという大きな疑問があります。私の質問の主な焦点は、前処理のパフォーマンスを向上させる方法です。
ありがとう
よろしくヌワン
私は、Java を使用した盗作検出フレームワークに関連するプロジェクトに取り組んでいます。私のドキュメント セットには約 100 個のドキュメントが含まれており、それらを前処理して適切なデータ構造に保存する必要があります。大量のドキュメントを効率的に処理し、ボトルネックを回避するにはどうすればよいかという大きな疑問があります。私の質問の主な焦点は、前処理のパフォーマンスを向上させる方法です。
ありがとう
よろしくヌワン
あなたはそこの詳細に少し欠けています。適切な最適化は、ドキュメント形式、平均ドキュメントサイズ、それらの処理方法、データ構造に保存している情報の種類などによって異なります。それらのどれも知らないので、いくつかの一般的な最適化は次のとおりです。
特定のドキュメントの前処理が他のドキュメントの前処理から独立していると仮定し、マルチコアCPUを実行していると仮定すると、ワークロードはマルチスレッドの適切な候補です。CPUコアごとに1つのスレッドを割り当て、スレッドにジョブをファームアウトします。次に、複数のドキュメントを並行して処理できます。
より一般的には、できるだけ多くのことをメモリで行います。ディスクからの読み取り/ディスクへの書き込みはできるだけ避けてください。ディスクに書き込む必要がある場合は、書き込みたいデータがすべて揃うまで待ってから、すべてを1つのバッチで書き込んでください。
あなたは良い提案をするための情報をほとんど与えません。
私のデフォルトでは、各スレッドがドキュメントを処理するマシンのコアと同じ数のスレッドを持つスレッドプールを備えたエグゼキュータを使用してそれらを処理します。