Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <time.h>
- /*
- struct timespec {
- time_t tv_sec; //seconds
- long tv_nsec; //nanoseconds
- };
- CLOCK_REALTIME
- CLOCK_PROCESS_CPUTIME_ID
- CLOCK_THREAD_CPUTIME_ID
- startTime = clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&t1);
- endTime = clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&t2);
- elapsed CPU time: endTime - startTime;
- */
- // profiling code using clock_gettime article https://www.guyrutenberg.com/2007/09/22/profiling-code-using-clock_gettime/
- struct timespec diff(struct timespec start,struct timespec end)
- {
- struct timespec temp;
- if ((end.tv_nsec-start.tv_nsec)<0) {
- temp.tv_sec = end.tv_sec-start.tv_sec-1;
- temp.tv_nsec = 1000000000+end.tv_nsec-start.tv_nsec;
- } else {
- temp.tv_sec = end.tv_sec-start.tv_sec;
- temp.tv_nsec = end.tv_nsec-start.tv_nsec;
- }
- return temp;
- }
- int
- main (int argc, char **argv)
- {
- struct timespec time1, time2;
- int a = 0;
- clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
- for(int i = 0;i<100;i++)
- {
- a++;
- }
- clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2);
- printf("a: %d\n", a);
- //printf("%ld:%ld\n",diff(time1,time2).tv_sec, diff(time1,time2).tv_nsec);
- printf("%ld:%09ld\n",diff(time1,time2).tv_sec, diff(time1,time2).tv_nsec);
- clock_gettime(CLOCK_REALTIME, &time1);
- sleep(1);
- clock_gettime(CLOCK_REALTIME, &time2);
- //printf("%ld:%ld\n",diff(time1,time2).tv_sec, diff(time1,time2).tv_nsec);
- printf("%ld:%09ld\n",diff(time1,time2).tv_sec, diff(time1,time2).tv_nsec);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment