2017-08-13 60 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

相關問題