этот вопрос соответствует этой теме: создание огромного фиктивного файла за считанные секунды в c#
Я только что проверил fsutil.exe в xp/vista/seven, чтобы записать огромное количество фиктивных данных на диск хранения, и для записи такого большого файла требуется меньше времени по сравнению с программным способом.
Когда я пытаюсь сделать то же самое с помощью .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 раза быстрее
пример: для записи 400 МБ с помощью .net потребуется ~ 40 секунд, такая же сумма с fsutil.exe займет около 20 секунд или меньше.
есть какое-то объяснение этому? или какую функцию использует fsutil.exe, которая имеет такую скорость записи?