我有一个win32 I/O性能问题: 我试图使用OpenFile/WriteFile实现一个体面的写入速度。 使用资源监控器(它设有窗户)我测量了下面这段代码的写入速度,我发现它在写入2MB /秒......win32 I/O性能问题
HANDLE hFile = INVALID_HANDLE_VALUE;
hFile = CreateFile(
L"test",
(GENERIC_READ | GENERIC_WRITE),
FILE_SHARE_READ,
NULL,
OPEN_ALWAYS,
(FILE_ATTRIBUTE_NORMAL |
FILE_FLAG_WRITE_THROUGH |
FILE_FLAG_NO_BUFFERING),
NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
//OK
unsigned long bytesWritten = 0;
unsigned long* Buffer = (unsigned long*)malloc(4096*sizeof(unsigned long));
ZeroMemory(Buffer, 4096); //thanks to 'bash.d'
while (true)
{
/*the infinite loop is intentional
because I wanted to see if the writing speed of 2MB/sec
was right */
WriteFile(hFile,
Buffer,
4096,
&bytesWritten,
NULL);
if (bytesWritten <= 0)
{
break;
}
}
}
我试着用以下的和它的相同...
hFile = CreateFile(
L"test",
(GENERIC_READ | GENERIC_WRITE),
FILE_SHARE_READ,
NULL,
OPEN_ALWAYS,
(FILE_ATTRIBUTE_NORMAL);
我在做什么错(关于写入速度)?以及如何提高写入速度? 谢谢你,对不起我的英语
编辑: 我在写一个本地磁盘
你在做什么错?为了提高写入速度,您可以尝试制作比4 KiB更大的缓冲区,但这最终取决于操作系统。 – m0skit0 2013-02-20 10:54:39
微型4k缓冲区确定,但2MB/s对于本地磁盘仍然很慢。当然,如果磁盘在缓慢/拥塞的网络上... – 2013-02-20 10:56:58
..或者SD卡.. – 2013-02-20 10:58:38