大量のメモリを使用せずに大容量のファイルを表示するための最良の方法は何ですか?

StackOverflow https://stackoverflow.com/questions/694137

質問

など六角ワークショップなどの多くのバイナリエディタは、比較的小さなメモリフットプリントを維持しながら、大きなサイズのファイルを読んで、まだスムーズスクロールを維持するために管理することができます。私はこれを達成するための最良の方法を探しています、と私はいくつかの関連質問があります。

私はただのFileStreamを使用する必要がありますか?
- そのバッファリングは、現在のシーク位置に基づいていますか? (逆方向にスクロールするときには、通常、ページフォールトのだろうか?)
- 私は内部でのみ使用していますシークのFileStreamのラッパーを作成した場合、私は適切に緩衝するのFileStreamの能力を傷つけるだろうか? (すなわち、パフォーマンスが求めている場合でも、繰り返しシークから大幅に苦しむことになる私は、パフォーマンスアップを維持するためにバッファリングアルゴリズムまたはディスクスケジューラに頼ることはできますか?近くにあります)

メモリマップドI / Oを使用する方がよいでしょうか?
(私は本当に多分100メガバイトまでのファイルを期待します) - ジャンプ/高速の顕著なパフォーマンスの問題を作成してスクロール/検索からpagefaultsだろ

? 最終的にデータが表示されることがあります。私は、ビットマップとしてファイル全体をレンダリングし、(スクロール制御を画像上の独自のページングを行うせる)の変更時に画像の一部を無効、または私はちょうどスクロールイベントの現在の表示領域を生成する必要がありますする必要がありますか?

を だから、要するに、私のページのデータ、生成された画像、またはその両方を行う、または私は必要に応じてそれらを生成/取得するのですか? (WPF /ネット)ライブラリ/ APIオブジェクトは、このタスクに最適な何ですか?

役に立ちましたか?

解決

あなたはすでに答えを持っているようだ。
このため一般的な解決策は、メモリマップトファイルを使用してOSを聞かせていますキャッシングと模索してわざわざ。
まず、最も単純で最も明白な解決策を試してみてください。それはあなたの満足に動作しない場合は、ボトルネックを最適化します。 時期尚早の最適化は諸悪の根源である。

他のヒント

100メガバイトは本当に大きくありません。だから、メモリ内に、おそらく新しいマシン上で動作します。

しかし、時間が経つにつれて、あなたのソリューションを拡張できませんしたいとは思わないでしょう。あなたが制限を前提と分は100MBの誰かが200メガバイトでそれをしようとしています。だから私は、あなたがルートを「求める」取るかをお勧めしたい - 。それはそれを行うための一般的な方法ですが、

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top