测量任何 Windows 可执行文件的内存使用情况和执行时间
Measuring the memory usage and execution time of any Windows executable
我需要通过创建一些批处理文件或代码片段来测量任何Windows可执行文件的内存使用情况和执行时间。就像在线评委一样,我希望这个过程是完全自动化的,这样我就不必每次需要测量时都打开任务管理器,或者在原始源文件中插入额外的行。
例如,如果我将此特定C++源编译为可执行a.exe
:
#include <cstdio>
int main()
{
printf("%d", 1 + 2);
}
并测量此特定a.exe
的执行时间和内存使用情况,批处理应生成如下内容:
Used: 0.015s, 3092K
我已经在StackOverflow上研究了几个小时,但结果要么是UNIX二进制文件,要么是嵌入源代码的代码行。
提前非常感谢。
Microsoft已经有了一些可以做到这一点的东西(GetProcessMemoryInfo(。 MS 提供的示例代码将列出所有正在运行的进程的内存使用情况。但是,可以通过指定程序的句柄来更改它。
文档: https://msdn.microsoft.com/en-us/library/windows/desktop/ms683219(v=vs.85(.aspx
示例代码: https://msdn.microsoft.com/en-us/library/windows/desktop/ms682050(v=vs.85(.aspx
至于时间,我偶然发现了另一个问题的片段(轻松测量经过的时间(
#include <ctime>
void f() {
using namespace std;
clock_t begin = clock();
//run a.exe
clock_t end = clock();
double elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
}
相关文章:
- 如何在没有死锁和/或争用的情况下正确使用 std::mutex C++?
- 在集合的情况下使用emplace_hint的用例是什么?
- 在没有堆的情况下用两种方法构造对象
- 如何在不中断的情况下正确使用C++中的切换用例语句中的Fallthrough
- 给定一个填充无符号字符**的 C 函数,如何在没有中间副本的情况下用数据填充 std::vector
- 在这种情况下,有没有办法用单个解决方案替换两个仅在类型上不同的相似函数?
- 为什么在一种情况下,我会收到带有字符串文字的已弃用转换警告,而在另一种情况下却没有?
- 不能在没有对象的情况下调用成员函数,但我用对象调用函数
- 在不先显式调用析构函数的情况下,在旧对象上使用placement new是否危险
- 无法在前面有多余空格的情况下获取要打印的数组.只有第一个值会用空格打印
- 在可疑的情况下发出叮当警告:函数'foo'可以用属性"noreturn"声明吗?
- 如何在没有任何JavaScript知识的情况下用PNaCl编写C++HTML5应用程序
- 如何在不使用开关大小写的情况下用C++编写菜单驱动的程序
- 在什么情况下,运算符=应该用左值/右值重载而不是复制和交换来实现
- 在没有测试用例的情况下提升单元测试框架
- 在这种情况下,为函数赋值有什么用
- 如何在没有_setmode的情况下用C++输出unicode
- 如何在没有STL的情况下用c++中的Key创建和访问内存块
- 如何在不锁定文件的情况下用C++编写文件
- clang与gcc运行时的区别:用clang构建的c++类模板在没有复制构造函数的情况下崩溃,用复制构造函数构建的gcc