我有一個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