この質問は、このトピックによるものです: c# でほんの数秒で巨大なダミー ファイルを作成する
xp/vista/seven の fsutil.exe をチェックして、膨大な量のダミー データをストレージ ディスクに書き込んだところ、プログラムによる方法と比較して、このような大きなファイルの書き込みにかかる時間が短くなりました。
.net を使用して同じことをしようとすると、fsutil.exe よりもかなり時間がかかります。
注:私は.netがネイティブコードを使用していないことを知っています。そのため、次のようにネイティブAPIでこの問題を確認しました:
long int size = DiskFree('L' - 64);
const char* full = "fulldisk.dsk";
__try{
Application->ProcessMessages();
HANDLE hf = CreateFile(full,
GENERIC_WRITE,
0,
0,
CREATE_ALWAYS,
0,
0);
SetFilePointer(hf, size, 0, FILE_BEGIN);
SetEndOfFile(hf);
CloseHandle(hf);
}__finally{
ShowMessage("Finished");
exit(0);
答えは.netの結果と同じでした。
しかし、fsutil.exe の助けを借りて、上記よりも短い時間しかかからないか、.net アプローチは 2 倍高速であると言います
例: .net で 400MB を書き込む場合、約 40 秒かかります。 fsutil.exe を使用した場合と同じ量で、約 20 秒以下かかります。
それについての説明はありますか?または、 fsutil.exe が使用する関数のうち、この重要な書き込み速度を持つ関数はどれですか?