On Tue, 10 Aug 2010 10:53:23 -0400
James Carlson <carls...@workingcode.com> wrote:

> Sad Clouds wrote:
> > uint64_t current_time;
> > while(1)
> > {
> >     get_network_data();
> >     current_time = update_current_time();
> >     ...
> >     use_current_time();
> > }
> > 
> > So in a tight loop, if update_current_time() calls clock_gettime()
> > on every loop iteration, what would kill performance.
> 
> How much execution time does update_current_time() take when compared
> to get_network_data()?
> 
> You might also want to look into the SO_TIMESTAMP option.

It's just an example. The longest time would be time spent in
clock_gettime() call, but it only calls clock_gettime() at specified
intervals, which could be every second, or every microsecond, it
depends on how accurate the application wants the current time to be.
At all other times, the function calls a few simple arithmetic
instructions to adjust 64-bit counters, so it's negligible.

The general idea is not to call clock_gettime() on every loop
iteration, but instead let CPU adjust 64-bit counters until the
specified time interval is detected. This way the function is "self
clocking" and provides a good estimate of current system time in tight
loops.
_______________________________________________
opensolaris-code mailing list
opensolaris-code@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to