On Wed, May 28, 2014 at 08:13:56AM -0400, David T. Lewis wrote:
On Wed, May 28, 2014 at 11:49:08AM +0200, Bert Freudenberg wrote:
On 25.05.2014, at 19:48, David T. Lewis lewis@mail.msen.com wrote:
Performance of the UTC based DateAndTime is generally favorable compared to the original. Here is what I see on my system (smaller numbers are better).
LXTestDateAndTimePerformance test results using the original Squeak DateAndTime on an interpreter VM: { #testNow->10143 . #testEquals->30986 . #testGreaterThan->80199 . #testLessThan->75912 . #testPrintString->10429 . #testStringAsDateAndTime->44657 }
LXTestDateAndTimePerformance test results using the new UTC based DateAndTime on an interpreter VM: { #testNow->6423 . #testEquals->31625 . #testGreaterThan->22999 . #testLessThan->18514 . #testPrintString->12502 . #testStringAsDateAndTime->32912 }
Hi Dave,
just curious: did you test the performance without the LargeInt primitives?
- Bert -
For the new UTC implementation with the primitive disabled, fallback code is much slower for DateAndTime class>>now.
{ #testNow->36939 . #testEquals->29015 . #testGreaterThan->21142 . #testLessThan->17586 . #testPrintString->11809 . #testStringAsDateAndTime->30918 }
I just fixed a glitch in the Jenkins job that keeps the 64-bit image updated, and it occurred to me that I should try the UTC DateAndTime in a 64-bit image (image format 68002, see http://build.squeak.org/job/Squeak%2064-bit%20image/).
The results surprised me. I was expecting the 64-bit image to be slower (which I *think* is the case generally, based on the interactive feel). But the 64-bit image is faster for the standard DateAndTime, and also for the UTC based DateAndTime. The UTC DateAndTime on 64-bit image seems to be the fastest of any of the combinations that I have tested, aside from some degradation in printString processing.
The standard Squeak DateAndTime yields this in a 64-bit image: { #testNow->8225 . #testEquals->23880 . #testGreaterThan->66041 . #testLessThan->62482 . #testPrintString->9473 . #testStringAsDateAndTime->39384 }
And the new UTC implemention gives this in a 64-bit image: { #testNow->5494 . #testEquals->24902 . #testGreaterThan->17162 . #testLessThan->14169 . #testPrintString->11173 . #testStringAsDateAndTime->28108 }
For reference, the original standard DateAndTime on a 32-bit image (see above) gave me these numbers. Note the difference in the basic magnitude operations, testing for one DateAndTime instance greater than or less than another. { #testNow->10143 . #testEquals->30986 . #testGreaterThan->80199 . #testLessThan->75912 . #testPrintString->10429 . #testStringAsDateAndTime->44657 }
Dave