c++ - 确定进程读取的字节总数

标签 c++ windows file-io

我目前正在从事一个项目,我们的目标之一是减少从磁盘读取的数据总量。有没有办法确定进程运行的字节总数?我正在使用 Visual Studio 2005 构建的 C++ 应用程序,在 Windows XP 上运行。

理想情况下,如果我指定进程名称,我想要某种可以打印结果的监视器。但是,如果有某种 API 可以在我自己的应用程序中使用,那也很好。

我知道这一定是可能的,因为我可以在进程运行时显示任务管理器中读取的字节总数,我希望能够为已经完成的进程获取这个数字。

最佳答案

您可以使用 GetProcessIOCounters功能。这将返回总读取操作、写入操作、其他、读取字节、写入字节和其他字节。这个过程仍然需要活着才能工作——持有这个过程的句柄就足够了。或者,您的进程可以在退出时记录此信息。

如果您的目标是减少磁盘 I/O,我建议您使用 Windows Performance Toolkit .这将向您显示您正在从哪些文件读取最多数据,哪些线程正在读取最多数据,并帮助您提供更多的系统范围 View ,以防您在系统其他地方引起磁盘 I/O .

关于c++ - 确定进程读取的字节总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1364144/

相关文章:

c++ - 为什么参数匹配适用于非模板版本,但不适用于模板版本?

c++ - MinGW Distro 安装问题

windows - 如何在mongo shell中每页显示命令输出页

java - 使用 FileWriter (Java) 以 UTF-8 格式写入文件?

java - 创建文件不写入java

ruby - ruby 中的循环、数组和文件问题

c++ - 在 VC++ 中执行一个进程并返回它的标准输出

c++ - 用于嵌套 for 循环的 OpenMP?

尝试读取 Process 的输出消息时 Java 代码卡住

r - 如何让 Windows 识别到 R 中的 "pt_br.utf-8"