大容量ファイル(100M以上ぐらい)の内容の比較を高速に行うには? – 固定ページ 2 – プログラミング – Home

大容量ファイル(100M以上ぐらい)の...
 
通知
すべてクリア

[解決済] 大容量ファイル(100M以上ぐらい)の内容の比較を高速に行うには?

固定ページ 2 / 2

Tome
 Tome
(@Tome)
ゲスト
結合: 18年前
投稿: 36
Topic starter  

>プログレスバー使うのが大げさかどうか訊かれても、そんなもんcase-by-caseでしょうに。
> その待ちが利用者に不安/不満を与えるのであれば、それを軽減する策を講じるってだけ。

すいません。
怒らせるつもりはなかったのですが・・・

大容量の比較処理に使う一般的な動作(表示)があると思っていたので、それとなく聞けばなんかい
い方法を教えてもらえると思ってました。

よくよく考えたら大容量の比較なんて、一般的なツールではあんまやらないですよね・・・

いろいろありがとうございました。


返信引用
kure
 kure
(@kure)
ゲスト
結合: 19年前
投稿: 48
 

ReadFileが遅いなら
MappedFileにしたら?
大容量ファイルへのアクセスはMappedFileの方が高速にできたはずですよ。
CreateFileMapping調べてみてくだせぇ。

# CreateFileのフラグにシーケンシャルアクセスフラグつけたり
# バッファリングしないフラグつけても改善されんのかな?


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

SHFileOperationって、ファイルを操作するだけなので、その中を読んだりはしないでしょう。
<MSDN>
Copies, moves, renames, or deletes a file system object.
</MSDN>

# ReadFileだと副次情報が欠落しますし。


返信引用
Tome
 Tome
(@Tome)
ゲスト
結合: 18年前
投稿: 36
Topic starter  

> CreateFileMapping調べてみてくだせぇ
早速調べてやってみました。
速いですね。
SHFileOperationのファイルコピーと同じぐらいで比較できるようになりました。
使用メモリもたいしたことないっぽいです。
ありがとうございました。

> SHFileOperationって、ファイルを操作するだけなので、その中を読んだりはしないでしょう
よくわかりませんが、それで高速にコピーできるわけですね。
ReadFileとWriteFileを繰り返してコピーしてるんだと勘違いしてました。

で、一応結論
■比較はCreateFileMapping,MapViewOfFileを使う
■時間がかかる容量のファイルであれば、砂時計等を表示する
■その他ほとんどの容量の少ないファイルは、比較をそのまま待つ(一瞬)

という感じです。
ありがとうございました。


返信引用
kure
 kure
(@kure)
ゲスト
結合: 19年前
投稿: 48
 

> 使用メモリもたいしたことないっぽいです。

んーまぁ、これはある意味しょうがないんだけど、
MappedFileを使った場合もきちんとメモリは消費されます。
タスクマネージャとかで見てる限りだと
そんな風に見えないんだけれども、実際には
WorkingSetSizeも増えるし、当然メモリ空間の予約もされるわけで
VirtualSizeも増加します。
アクセスすればページフォルトが発生してメモリ空間のコミットも
行われるし、MappedFileだからメモリ食わないってことはないです。

# SHFileOperationって内部でDMAとか使ってドバーッと転送してるんじゃないかな?
# それならCPUもほとんど使わないしReadFile/WriteFileするよか
# バッファも使わない分早いはず。ただの推測ですけど(;´Д`)


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました