cwindowsexecution-time

Measure execution time in C (on Windows)


Is there a better function or way to measure time than clock() function on Windows? I have a short operation and when I try clock() or gettickcount() it says it took 0.0 seconds. I need a way to measure it by miliseconds or nanoseconds.


Solution

  • You can use QueryPerformanceCounter and QueryPerformanceFrequency :

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    
    int main(void)
    {
        LARGE_INTEGER frequency;
        LARGE_INTEGER start;
        LARGE_INTEGER end;
        double interval;
    
        QueryPerformanceFrequency(&frequency);
        QueryPerformanceCounter(&start);
    
        // code to be measured
    
        QueryPerformanceCounter(&end);
        interval = (double) (end.QuadPart - start.QuadPart) / frequency.QuadPart;
    
        printf("%f\n", interval);
    
        return 0;
    }