00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include <basix/timer.hpp>
00014
00015 namespace mmx {
00016
00017 #ifdef BASIX_HAVE_GETTIMEOFDAY
00018 #include <sys/time.h>
00019 #if !(defined(__MINGW__) || defined(__MINGW32__))
00020 # include <sys/resource.h>
00021 #endif
00022 #else
00023 #include <sys/timeb.h>
00024 #endif
00025
00026 nat
00027 mmx_time () {
00028 #ifdef BASIX_HAVE_GETTIMEOFDAY
00029 struct timeval tp;
00030 gettimeofday (&tp, NULL);
00031 return (nat) ((time_t) ((tp.tv_sec * 1000) + (tp.tv_usec / 1000)));
00032 #else
00033 timeb tb;
00034 ftime (&tb);
00035 return (nat) ((time_t) ((tb.time * 1000) + tb.millitm));
00036 #endif
00037 }
00038
00039 double
00040 mmx_var_time () {
00041 #ifdef BASIX_HAVE_GETTIMEOFDAY
00042 struct timeval tp;
00043 gettimeofday (&tp, NULL);
00044 return (((double) tp.tv_sec) * 1000) + ((double) (tp.tv_usec / 1000));
00045 #else
00046 timeb tb;
00047 ftime (&tb);
00048 return (((double) tb.time) * 1000) + ((double) tb.millitm);
00049 #endif
00050 }
00051
00052 nat
00053 mmx_user_time () {
00054 #if defined(__MINGW__) || defined(__MINGW32__)
00055 return 0;
00056 #else
00057 struct rusage used;
00058 nat t;
00059 getrusage(RUSAGE_SELF, &used);
00060 t = (nat) ((time_t) ((used.ru_utime.tv_sec * 1000)
00061 + (used.ru_utime.tv_usec / 1000)));
00062 getrusage(RUSAGE_CHILDREN, &used);
00063 return t + (nat) ((time_t) ((used.ru_utime.tv_sec * 1000)
00064 + (used.ru_utime.tv_usec / 1000)));
00065 #endif
00066 }
00067
00068 }