этот вопрос по этой теме: creating a huge dummy file in a matter of seconds in c#Почему fsutil.exe занимает меньше времени, чтобы написать огромный файл на диск, чем программно?
Я только что проверил fsutil.exe в XP/Vista/семь, чтобы написать огромное количество фиктивных данных на диске для хранения и занимает меньше времени, чтобы написать такой большой файл по сравнению с программным способом.
, когда я пытаюсь сделать то же самое с помощью .net это займет значительно больше времени, чем fsutil.exe
Примечание: Я знаю, что .net не использует собственный код bcuz этого Я просто проверил эту проблему с помощью родного 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 раза быстрее пример: для сочинительства 400MB с .net это займет ~ 40 секунд ту же сумму с fsutil.exe займет около 20 секунд или меньше.
есть ли какие-либо объяснения об этом? или какая функция fsutil.exe использует, которая имеет такую значимость для записи?
«дырявый» файл, термин «разреженный». –
Я всегда предпочитал дырявый (это исходный термин UNIX из-за-назад-когда); но я изменил его на редкие для педантов. – RickNZ