[fpc-devel] Problem with Now() and time changed by ntpd

zeljko zeljko at holobit.net
Wed Nov 2 16:21:00 CET 2011


On Wednesday 02 of November 2011 16:12:49 you wrote:
> On Wed, 2 Nov 2011, zeljko wrote:
> > On Wednesday 02 of November 2011 15:47:46 you wrote:
> >> On Wed, 2 Nov 2011, zeljko wrote:
> >>> On Wednesday 02 of November 2011 14:53:05 you wrote:
> >>>> You must do also a localtime_r after this call.
> >>>> clock_gettime returns the same time as gettimeofday.
> >>> 
> >>> But point IS in comparing clock_gettime() vs. gettimeofday() which is
> >>> used by fpgettimeofday(). I don't see localtime_r() calls in current
> >>> RTL Now().
> >> 
> >> Ok.
> >> 
> >> It turns out that Now() was doing a fpGettimeofday (for time) and a
> >> fptime (for date), which is of course really stupid.
> > 
> > Yes, I saw that after posted example.
> > 
> >> I improved that (it does one call only). So, new stats, 64-bit, no
> >> optimizations:
> >> 
> >> sb: >./unixclocks
> >> RTL Now() with 10000000 calls = 3698 ms
> >> Kernel clock_gettime() NowReal() with 10000000 calls = 6564 ms
> >> 
> >> Revision 19572.
> >> 
> >> The time is now less than the Libc time you posted (5085ms).
> > 
> > I don't care about libc timing, but why clock_gettime() is so slower now
> > ? It is called only once in my example. Are you sufre that RTL now()
> > returns correct date/time ?
> 
> Yes. Of course I tested that first :-)
> 
> I assume your version is slower because you call epochtolocaltime twice,
> for instance.
> 
> If I remove the second call (it's not needed anyway) then
> 
> RTL Now() with 100000 calls = 2337 ms
> Kernel clock_gettime() NowReal() with 100000 calls = 2344 ms
> 
> >> I can't test the libc version, but if you'd care to re-test using the
> >> above revision of unix/sysutils.pp, and post the results, I'd be
> >> grateful.
> > 
> > Sorry, but I don't want to use 2.7.1 until it's useable.
> 
> I attached the changed file.

No need to test libc version in this case it's timing will be slower anyway 
because of 2 calls a) gettimeofday() localtime_r() ... so it's not important 
at all.
That sysutils.pp now looks pretty clean, and again: *I hope*  that this 
changes will be merged to 2.4.5 and 2.6.0 :) ... and of course 
ReReadTimeZone() (or what was that name...) as solution for issue  ... 
http://bugs.freepascal.org/view.php?id=20604

zeljko
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20111102/e4468326/attachment.html>


More information about the fpc-devel mailing list