I want to log the CPU usage of my C program in Visual Studio. Using Performance Profile I am able to view the graphical representation of the CPU usage of my C program. But what should I do or what code should I add to my existing code so that I can log the CPU usage of my program for each second in a text or an excel file.
            Asked
            
        
        
            Active
            
        
            Viewed 113 times
        
    1
            
            
        - 
                    Possible duplicate of [How to determine CPU and memory consumption from inside a process?](https://stackoverflow.com/questions/63166/how-to-determine-cpu-and-memory-consumption-from-inside-a-process) – weeska Jun 30 '17 at 06:58
- 
                    My question is how to log the cpu usage in an excel or text file..and not just view it @weeska – Jun 30 '17 at 07:04
- 
                    A I see - that wasn't clear to me. Sorry – weeska Jun 30 '17 at 09:33
1 Answers
2
            
            
        Probably the easiest thing to do would be to create a thread, that just uses GetProcessTimes to get the process' current CPU usage, write it out to the file, sleep a second, and repeat. You can then (for example) set a signal to tell it to exit:
FILETIME creation, done, kernel, user;
int PID;
std::atomic<bool> finished = false;
std::thread logger([&] {
    printf("seconds\n");
    while (!finished) {
        GetProcessTimes(GetCurrentProcess(), &creation, &done, &kernel, &user);
        SYSTEMTIME used_k, used_u;
        FileTimeToSystemTime(&kernel, &used_k);
        FileTimeToSystemTime(&user, &used_u);
        DWORD milliseconds = used_k.wMilliseconds + used_u.wMilliseconds;
        DWORD seconds = used_k.wSecond + used_u.wSecond;
        printf("%d.%3.3d\n", seconds, milliseconds);
        Sleep(1000);
    }
});
// Do work to be timed/logged here
finished = true;
logger.join();
 
    
    
        Jerry Coffin
        
- 476,176
- 80
- 629
- 1,111
- 
                    ok.. i somehow was able to get the cpu usage of my program every second. but when i added the code such that the console output may be written onto a csv file, the program throws me an exception saying that there is some integer diviion by zero.. what should i do? @Jerry Coffin – Jun 30 '17 at 11:10
- 
                    1@JessieBunny: My crystal ball tells me the error is on line 42. Seriously: I can't really diagnose your code based on that description. I suppose what you should do is debug your code. – Jerry Coffin Jun 30 '17 at 13:09