2017-08-13 62 views
2

我需要通过创建一些批处理文件或代码片段来测量内存使用情况和执行时间任何 Windows可执行文件。就像在线评委一样,我希望这个过程完全自动化,所以我不必每次打开任务管理器就需要测量,或者在原始源文件中插入额外的行。测量任何Windows可执行文件的内存使用情况和执行时间

例如,如果我编译该特定的C++源到可执行a.exe

#include <cstdio> 

int main() 
{ 
    printf("%d", 1 + 2); 
} 

并测量该特定a.exe的执行时间和存储器使用,批处理应该产生类似:

Used: 0.015s, 3092K 

我在StackOverflow上研究了好几个小时,但结果是UNIX二进制文件或代码行嵌入到源代码中。

非常感谢提前。

+0

所以,你想你的代码做一些事情其他但不改变它!然后,您的解决方案是创建一些更多的代码,它与附加功能一起运行。这是您研究和整合的工作,我们在这里帮助您解决代码问题,而不是为您设计和创建代码。 – Compo

回答

2

微软已经有这样做(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

至于时间,我偶然发现了一个片段从另一个问题(Easily measure elapsed time

#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; 
} 
+0

正如我所说的,我不想在原始代码中插入行 –

+1

我认为您在这里遇到了问题。我给出的两个例子都可以独立于您的程序运行。第一个将在a.exe已经运行时检查你的内存使用情况。第二个将执行a.exe来衡量它的运行时间。你如何组合它们取决于你;) – KonaeAkira

相关问题