0

ボックス: Linux、gcc。

問題 :

このフォルダーを再帰的にスキャンして、何千ものアイテムを含むホーム フォルダーのファイル署名を見つけます。

これまでに行われたこと:

システム コールを使用しmmap()て、各ファイルの最初の 1k バイトをロードし、ファイル マジック ナンバーを確認します。この方法の欠点は、遭遇したファイルごとに 2 つのシステム コール (例:mmap()munmap()) を行わなければならないことです。

可能な場合の最善の解決策:

メモリの単一のチャンクを割り当て、この一意のバッファーに各ファイルを (行で) ロードし、処理が完了したら割り当てを解除します。つまり、スキャンしたフォルダーごとに 2 つのシステム コールのみを使用します。

この解決策が現実的であっても、それを達成するためにどのシステムコールを使用すればよいかわかりません!

アドバイスをいただければ幸いです。

4

1 に答える 1

0

十分ではないことがわかるまで、パフォーマンスについて心配する必要はありません。あなたの時間は、プログラムの実行時間の増加よりもはるかに価値があります (非常にまれなケースを除いて)。そして、パフォーマンスが十分でない場合は、掘り下げる前に測定してください。「パフォーマンスの最適化」に関する多くの戦争の話がありますが、完全に無駄でした (積極的に有害ではない場合)。

于 2013-01-20T02:57:38.500 に答える