Hi igor and levente I want to thank you because I love this thread. Why because it makes me think and I learn things :) I will reread it several time and browse the system... to learn again Thanks
>>> Both #timeToRun and secondsWhenClockTicks (via Delay) using same primitive >>> - #millisecondClockValue. >>> Sure thing, precision of this primitive should be it is 1 millisecond >>> or smaller.. >>> But it has nothing to do with precision of primSecondsClock and you >>> cannot increase precision of >>> it using #millisecondClockValue. >> >> >> The only thing I wanted to point out is that the value of #primSecondsClock >> changes when the actual second changes (the difference is less than 1ms). So >> while its resolution is just 1 second, it's accuracy is better than 1ms. >> Here's another example using the microsecond clock: >> >> >> (1 to: 10) collect: [ :e | >> | start | >> Time secondsWhenClockTicks. >> start := Time primUTCMicrosecondClock. >> Time secondsWhenClockTicks. >> Time primUTCMicrosecondClock - start ]. "==> #(1000136 999914 >> 999961 999926 1000029 999988 999991 999985 998089 1000034)" >> > > My gut feeling that here you are rather measuring accuracy of 1ms > Delay operation (in secondsWhenClockTicks method). > by sampling it using system time function. > Because for both primitives (primUTCMicrosecondClock and primSecondsClock) > the source is system time. > But Delay, inside also uses system time at some point... > > so, here we're trying to reason about how to measure accuracy of some > function (which stays behind all of these) by using very same > function.. > > I am not genius in rules of correct measurement, but doesn't it sounds > silly to you? > >> >>> >>> Because this code: >>> >>> [ lastSecond = self primSecondsClock ] whileTrue: [ (Delay >>> forMilliseconds: 1) wait ]. >>> >>> actually means: >>> >>> [ lastSecond = self primSecondsClock ] whileTrue: [ block not less than 1 >>> ms ]. >>> >>> but not: >>> >>> [ lastSecond = self primSecondsClock ] whileTrue: [ block exactly 1 ms ]. >>> >>> the upper bound of "(Delay forMilliseconds: 1) wait" is undefined.. >>> and you know it well. >> >> >> Of course Delays are not ideal here, but there was nothing better to use >> when the code was written. As you can see in the above example, in 1 out of >> 10 cases the difference was less than 999 ms. >> >> >> Levente >> >> >>> >>>> >>>> About DateAndTime: having it nanosecond resolution is a future proof >>>> idea. >>>> It will take a while till software can create better accuracy timestamps. >>>> Reducing the resolution to milliseconds is a very bad idea. The VM and >>>> external software can give you a microsecond or smaller resolution >>>> timestamp >>>> which you want to represent as DateAndTime (or whatever class you use to >>>> create a timestamp) in the image. >>>> >>>> >>> Yes i know. My problem is the amount of code which does something >>> "userful" with nanoseconds >>> while everybody knows that we have no such resolution.. and won't have >>> in 10 years or so. >>> >>>> Levente >>> >>> >>> >>> -- >>> Best regards, >>> Igor Stasenko. >>> >>> >> > > > > -- > Best regards, > Igor Stasenko. >