[squeak-dev] Re: Some DateAndTime experiments

Paul DeBruicker pdebruic at gmail.com
Sat Apr 19 20:31:43 UTC 2014

You probably looked at this but Chronos, in the unadulterated Squeak 4.4
all-in-one, is ~2.5x faster than DateAndTime.  E.g.

[100000 timesRepeat: [Timepoint now]] timeToRun 387

[100000 timesRepeat: [DateAndTime now]] timeToRun  971

Maybe there are some ideas worth taking in there.  

The Chronos repo is here:

	location: 'http://smalltalkhub.com/mc/Chronos/Chronos/main'
	user: ''
	password: ''

You can load it in a workspace with

ConfigurationOfChronos load

Assuming you have metacello loaded.  

David T. Lewis wrote
> I have been experimenting with a new implementation of DateAndTime based
> on a UTC magnitude. In this implementation, the instance variables jdn,
> seconds, and nanos are replaced with a single utcMicroseconds, and the
> offset (a Duration) is replaced by localOffsetSeconds (an integer). The
> UTC magnitude and offset are provided directly by primitiveUtcWithOffset
> when doing DateAndTime now.
> I had hoped to achieve a sigificant performance advantage with this
> implementation, and while it does improve performance, I am only seeing
> about a 10% improvement overall, which is considerably less than I had
> hoped.
> Nevertheless, it is indeed faster, and implemention does have some
> interesting
> characteristics.
> The utcMicroseconds magnitude is in units of microseconds, but it is not
> required to be an integer and may represent time to any precision. In
> practice,
> values are integral unless the instance is explicitly created with a
> nanosecond
> value.
> New instances created by "DateAndTime now" will have the correct time zone
> offset as provided by the operating system platform, and their magnitude
> is
> set to a UTC value the precision provided by the platform.
> New instances created by other constructors use TimeZone default, which is
> problematic given that the time zone in Squeak may or may not match the
> (presumably correct) values provided by the operating system.
> Instances of DateAndTime are (at the moment) considered equal if their
> magnitudes
> are the same, independent of the time zone offset. This makes sense when
> thinking
> of them as magnitudes (DateAndTime is a Magnitude), but saying that two
> instances
> with different local offsets are equal might be wrong in other contexts.
> The localOffsetSeconds is used for displaying the date and time, and is
> not
> related to magnitude. Thus a DateAndTime is both a magnitude (UTC time)
> and a
> formatter (use the offset to show the magnitude in the context of a local
> time zone).
> Dave

View this message in context: http://forum.world.st/open-paren-brace-bracket-tp4755162p4755475.html
Sent from the Squeak - Dev mailing list archive at Nabble.com.

More information about the Squeak-dev mailing list