출처:http://www.gnu.org/software/libc/manual/html_node/Elapsed-Time.html


#include <stdio.h>

#include <sys/time.h>



int main()

{

    int i;

    int ret;


    struct timeval before , after, result;


    gettimeofday(&before , NULL);


    //Time taking task

    for (i=1 ; i <= 100 ; i++)

    {

        printf("%d %d %d n",i, i*i, i*i*i);

        usleep(i);

    }


    gettimeofday(&after , NULL);


    ret = timeval_subtract(&result, &after , &before);

    printf("ret=%d\n", ret);

    printf("\n[%d] sec ", result.tv_sec);

    printf("[%d] usec \n", result.tv_usec);


    return 0;

}


inttimeval_subtract (result, x, y)

  struct timeval *result, *x, *y;

{

/* Perform the carry for the later subtraction by updating y. */

if (x->tv_usec < y->tv_usec) {

int nsec = (y->tv_usec - x->tv_usec) / 1000000 + 1;

y->tv_usec -= 1000000 * nsec;

y->tv_sec += nsec;

}

if (x->tv_usec - y->tv_usec > 1000000) {

int nsec = (x->tv_usec - y->tv_usec) / 1000000;

y->tv_usec += 1000000 * nsec;

y->tv_sec -= nsec;

}


/* Compute the time remaining to wait.

tv_usec is certainly positive. */

result->tv_sec = x->tv_sec - y->tv_sec;

result->tv_usec = x->tv_usec - y->tv_usec;


/* Return 1 if result is negative. */

return x->tv_sec < y->tv_sec;

}