ctimeelapsed

How to get the time elapsed in C in milliseconds? (Windows)


I've searched in the Web but I've only found a way for do it, but in this way it returns in seconds instead of milliseconds.

My code is:

#include <stdio.h>
#include <assert.h>
#include <time.h>

int main(void)
{
    int solucion;

    time_t start, stop;
    clock_t ticks;
    long count;

    time(&start);
    solucion = divisores_it(92000000, 2);
    time(&stop);

    printf("Finnished in %f seconds. \n", difftime(stop, start));
    return 0;
}

Solution

  • A cross platform way is to use ftime.

    Windows specific link here: http://msdn.microsoft.com/en-us/library/aa297926(v=vs.60).aspx

    Example below.

    #include <stdio.h>
    #include <sys\timeb.h> 
    
    int main()     
    { 
        struct timeb start, end;
        int diff;
        int i = 0;
        ftime(&start);
    
        while(i++ < 999) {
            /* do something which takes some time */
            printf(".");    
        }
    
        ftime(&end);
        diff = (int) (1000.0 * (end.time - start.time)
            + (end.millitm - start.millitm));
    
        printf("\nOperation took %u milliseconds\n", diff);
        return 0;
    }
    

    I ran the code above and traced through it using VS2008 and saw it actually calls the windows GetSystemTimeAsFileTime function.

    Anyway, ftime will give you milliseconds precision.