Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<time.h>
  3. #include <sys/time.h>
  4. #include <sys/resource.h>
  5. // nanosleep to delay process between successive calls to print out time uses timespec structure
  6. int main(int argc, char** argv){
  7. struct timespec curr_time1,curr_time2, sleeptime;
  8. int i,delay,num_iter;
  9. double now1,now2,init;
  10. if (argc!=3) {
  11. fprintf(stderr, "Usage: %s <sleep time..msec><num_iterations>\n", argv[0]);
  12. exit(1);
  13. }
  14. // progname=argv[0];
  15.  
  16. delay=atoi(argv[1]);
  17. num_iter=atoi(argv[2]);
  18. printf("Delay is %d msec ..num_iter is %d\n",delay,num_iter);
  19. // set up sleeptime struct
  20. sleeptime.tv_sec=0;
  21. while(delay>=1000){ // overflow if >=1sec
  22. sleeptime.tv_sec++;
  23. delay=delay-1000;
  24. }
  25. sleeptime.tv_nsec=delay*1000000;
  26. printf("Sleeptime struct is %d sec: %d nsec\n",sleeptime.tv_sec,sleeptime.tv_nsec);
  27. clock_gettime(CLOCK_REALTIME, &curr_time1);
  28. init=curr_time1.tv_sec + curr_time1.tv_nsec*0.000000001;
  29. for(i=0;i<num_iter;++i)
  30. {
  31. clock_gettime(CLOCK_REALTIME, &curr_time1);
  32. //now=curr_time.tv_sec + curr_time.tv_nsec*0.000000001;
  33. //prev=now;
  34. //wakeup=now+delay*0.001;
  35. nanosleep(&sleeptime,NULL);
  36. clock_gettime(CLOCK_REALTIME, &curr_time2);
  37. now1=curr_time1.tv_sec + curr_time1.tv_nsec*0.000000001;
  38. now2=curr_time2.tv_sec + curr_time2.tv_nsec*0.000000001;
  39. printf("Time is %ld : %ld..slept for %lf
  40. nsec\n",curr_time2.tv_sec,curr_time2.tv_nsec,(now2-now1)*1000000000);
  41. }
  42. printf("Total time taken : actual %lf msec theory(excl. runtime): %d msec\n",(now2-
  43. init)*1000,num_iter*atoi(argv[1]));
  44. return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement