小编Mac*_*ker的帖子

如何尽可能快地创建CreateFile

我需要在启动时阅读数千个小文件的内容.在linux上,只需使用fopen和读取速度非常快.在Windows上,这种情况发生得非常缓慢.

我已经使用ReadFileEx切换到使用Overlapped I/O(异步I/O),其中Windows在数据准备好读取时进行回调.

但是,实际上成千上万次调用CreateFile本身仍然是一个瓶颈.请注意,我提供自己的缓冲区,打开NO_BUFFERING标志,提供SERIAL提示等.但是,对CreateFile的调用需要几十秒的时间,而在Linux上,所有操作都要快得多.

有什么办法可以让这些文件更快地准备好阅读吗?

对CreateFile的调用是:

            hFile = CreateFile(szFullFileName,
                GENERIC_READ,
                FILE_SHARE_READ | FILE_SHARE_WRITE,
                NULL,
                OPEN_EXISTING,
                FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED | FILE_FLAG_NO_BUFFERING | FILE_FLAG_SEQUENTIAL_SCAN,
                NULL);
Run Code Online (Sandbox Code Playgroud)

windows io performance file-io winapi

6
推荐指数
1
解决办法
5526
查看次数

标签 统计

file-io ×1

io ×1

performance ×1

winapi ×1

windows ×1