这个问题是根据这个主题: 在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 使用的哪个函数具有这种重要的编写速度?