特定のマルチファイル アーカイブからデータを読み取る小さな読み取り専用 FUSE ファイルシステムを C++ で実装しました。boost::filesystem::ifstream
ファイルを読み取るために、(実際には) iostream を使用しました。今思うと、それは賢明な決断だったのだろうか。
まず、iostream のエラー メッセージがひどいもので (別の質問を参照してくださいerrno
)、原因となったファイル操作を単純に返すことはできません。しかし、次に、FUSE ファイルシステムを実装するときに、バッファリングされていない IO を使用する方が良いのではないかと思います (アーカイブ インデックスを読み取るためではなく、ファイルを読み取る場合 - ファイルが複数のアーカイブ ファイルに分割されることのない圧縮されていないアーカイブです)。ファイルを読み取るアプリケーションは、必要に応じてバッファリングするためです。このバッファリングは不要なオーバーヘッドですか?
また、(ブースト)iostreamの速度はどれくらいですか?マウントされたアーカイブから問題なく WAV ファイルを再生できますが、実際には必要のないときに iostream が不必要なオーバーヘッドを追加するだけなのではないかと思います (それらが提供する唯一の利点は、スコープ外に出たときにファイルを自動的に閉じることです)。 .