WriteFile效率比较
最近遇到一个关于空间擦除的项目,用户反馈擦除效率偏低,进度也显示的不够及时,查看核心代码,发现内部最终调用WriteFile进行文件写入,速度也和该函数相关参数有关,于是做了下面的测试:
创建同一个设定大小的文件,用设定的单次写入大小对文件进行写操作,直至文件被写满,用多个不同的写入大小进行循环写入并计算每个写入大小写满文件耗时情况,以查看那种大小写入文件比较快,效率比较高
预设写入大小分别为:{64,128,256,512,1024,2048,4096,8192} kb
创建文件代码:
hFile = CreateFile( pThis->m_tagFileInfo.strFilePath, GENERIC_WRITE, 0, NULL,CREATE_ALWAYS,// CREATE_NEW, FILE_FLAG_NO_BUFFERING|FILE_FLAG_SEQUENTIAL_SCAN| /FILE_FLAG_DELETE_ON_CLOSE|/FILE_ATTRIBUTE_HIDDEN, NULL );
测试结果如下图所示:
结论:
上图分别往文件中写入1G 2G 4G 8G数据,综合来看,在写入数据时,单次写入64K,在不同文件大小情况下,速度表现都比较出色,属于最优写入大小吧