timer.c 585 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include <stdlib.h>
  2. #include "timer.h"
  3. struct _Timer {
  4. struct timeval start;
  5. struct timeval end;
  6. };
  7. Timer *
  8. timer_new (void)
  9. {
  10. Timer *t = (Timer *) malloc (sizeof (Timer));
  11. return t;
  12. }
  13. void
  14. timer_destroy (Timer *t)
  15. {
  16. free (t);
  17. }
  18. void
  19. timer_start (Timer *t)
  20. {
  21. gettimeofday (&t->start, NULL);
  22. }
  23. void
  24. timer_stop (Timer *t)
  25. {
  26. gettimeofday (&t->end, NULL);
  27. }
  28. double
  29. timer_get_seconds (Timer *t)
  30. {
  31. long seconds = t->end.tv_sec - t->start.tv_sec;
  32. long useconds = t->end.tv_usec - t->start.tv_usec;
  33. return seconds + useconds / 1000.0 / 1000.0;
  34. }