Opened 19 years ago
Closed 17 years ago
#192 closed Bugs (Wont Fix)
clock is not portable
Reported by: | magmaikh | Owned by: | beman_dawes |
---|---|---|---|
Milestone: | Component: | timer | |
Version: | None | Severity: | |
Keywords: | Cc: |
Description
On Win32 clock reports total elapsed time. On GNU/Linux clock reports consumed processor time by that process, and only reports time on the primary thread. Other threads always return 0, and time spent usleep'ing is not counted. The wording of the C/C++ standard is not without room for interpretation, and may even be interpreted to mean do whatever you can for clock. On Linux, and very possibly other *nix's, the function gettimeofday (in sys/time.h) should probably be used. code dump of my linux timer follows: template<typename T> struct HPTimer { i64 Now_us() { timeval now; MKH_THROWONFAILURE(gettimeofday (&tvnow, 0)); return i64(now.tv_sec) * 1000000 + now.tv_usec; } T Snap() { timeval snap; //timezone zn; MKH_THROWONFAILURE(gettimeofday (&snap, 0)); i64 now = i64(snap.tv_sec) * 1000000 + snap.tv_usec; i64 then = i64(prev_snap.tv_sec) * 1000000 + prev_snap.tv_usec; prev_snap = snap; return T(now - then) / 1000000; } protected: timeval prev_snap; };
Note:
See TracTickets
for help on using tickets.