gpt4 book ai didi

c++ - 使用 Procmon 分析读取操作

转载 作者:搜寻专家 更新时间:2023-10-31 02:20:47 24 4
gpt4 key购买 nike

我正在尝试使用带有 Procmon 的 ifstream 来分析基本的读取操作。

用于读取操作的部分代码,我试图从文件中读取 16kb 大小的数据:

char * buffer = new char[128000];
ifstream fileHandle("file.txt");
fileHandle.read(buffer, 16000);
cout << buffer << endl;
fileHandle.close();

在 Procmon 中有 4 个 ReadFile 操作,详细信息如下:

偏移量:0,长度:4,096,优先级:正常
偏移量:4,096,长度:4,096
偏移量:8,192,长度:4,096
偏移量:12,288,长度:4,096

那么这是否意味着每个 4kb 大小有 4 个操作?如果是这样,为什么会发生这种情况,而不是只进行一次 16 kb 大小的 ReadFile 操作。

最佳答案

So does it mean that there were 4 operations of each 4kb size ?

是的。

and if so why did that happen instead of just having a single ReadFile operation of 16 kb size.

可能是因为编译器附带的标准库将文件流缓冲区的默认大小设置为 4 KB;由于 read 操作必须通过缓冲区,因此必须填充(通过操作系统调用)并清空 4 次才能满足您的请求。请注意,您可以使用 fileHandle.rdbuf->pubsetbuf 更改 fstream 的内部缓冲区.

关于c++ - 使用 Procmon 分析读取操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32214514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com