diff options
author | Martin Sustrik <sustrik@250bpm.com> | 2010-06-17 16:51:53 +0200 |
---|---|---|
committer | Martin Sustrik <sustrik@250bpm.com> | 2010-06-17 16:51:53 +0200 |
commit | 7f01e9970d211235fc8057de6dc41ba8ceafe795 (patch) | |
tree | 600dc003c73e15ef965cc97a1abb99d6dfc0a260 /src/zmq.cpp | |
parent | 4777fe4010572d381a2ad8eb63df2fc5fb7e6642 (diff) |
stopwatch returned to libzmq
Diffstat (limited to 'src/zmq.cpp')
-rw-r--r-- | src/zmq.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/zmq.cpp b/src/zmq.cpp index c8f419a..73a8d65 100644 --- a/src/zmq.cpp +++ b/src/zmq.cpp @@ -661,3 +661,66 @@ int zmq_device (int device_, void *insocket_, void *outsocket_) return EINVAL; } } + +//////////////////////////////////////////////////////////////////////////////// +// 0MQ utils - to be used by perf tests +//////////////////////////////////////////////////////////////////////////////// + +#if defined ZMQ_HAVE_WINDOWS + +static uint64_t now () +{ + // Get the high resolution counter's accuracy. + LARGE_INTEGER ticksPerSecond; + QueryPerformanceFrequency (&ticksPerSecond); + + // What time is it? + LARGE_INTEGER tick; + QueryPerformanceCounter (&tick); + + // Convert the tick number into the number of seconds + // since the system was started. + double ticks_div = (double) (ticksPerSecond.QuadPart / 1000000); + return (uint64_t) (tick.QuadPart / ticks_div); +} + +void zmq_sleep (int seconds_) +{ + Sleep (seconds_ * 1000); +} + +#else + +static uint64_t now () +{ + struct timeval tv; + int rc; + + rc = gettimeofday (&tv, NULL); + assert (rc == 0); + return (tv.tv_sec * (uint64_t) 1000000 + tv.tv_usec); +} + +void zmq_sleep (int seconds_) +{ + sleep (seconds_); +} + +#endif + +void *zmq_stopwatch_start () +{ + uint64_t *watch = (uint64_t*) malloc (sizeof (uint64_t)); + assert (watch); + *watch = now (); + return (void*) watch; +} + +unsigned long zmq_stopwatch_stop (void *watch_) +{ + uint64_t end = now (); + uint64_t start = *(uint64_t*) watch_; + free (watch_); + return (unsigned long) (end - start); +} + |