数行のテキスト ファイルを取得し、このファイルで文字列を探しています。次のコマンド ライン パラメーターをプログラムに渡す必要が
あり
ます
。
そのようなプログラムはどのように構築されるべきですか?
数行のテキスト ファイルを取得し、このファイルで文字列を探しています。次のコマンド ライン パラメーターをプログラムに渡す必要が
あり
ます
。
そのようなプログラムはどのように構築されるべきですか?
いくつかの考え。
ファイルをメモリ マッピングすることで、両方の問題を解決できる可能性があります (それでも、キャッシュ ミス率が高くなるリスクがあります)。
これがどれだけ必要ですか?時期尚早の最適化になるという実際のリスクがあります。やむを得ない必要性なしに問題に触れないことをお勧めします。本当。
これを並列化する必要があると考える理由と、実際にパフォーマンス上の利点が見られるかどうかを検討してください。ディスク アクセス時間によって制限される可能性が高く、分岐にはオーバーヘッドがあります。最良のオプションは、標準のシングルスレッド検索を実行することです (おそらく正規表現を使用)。
これが本当に必要だと思う (またはこれは宿題ですか?) と仮定すると、(比較的高レベルの) 方法は次のようになります。
startIndex = indexOfProcess * fileSize / numberOfProcesses endIndex = (indexOfProcess + 1) * fileSize / numberOfProcessesオーバーラップを追加することで (文字列サイズの関数になります)、検索する文字列が 2 つ以上のプロセスのスライスにまたがる可能性があるという事実を考慮する必要があります。
これは宿題か、役に立たないかのどちらかです。ボトルネックは、CPU パワーではなく、ディスク帯域幅にあります。同時アクセスを使用すると、速度が低下するだけです。