How do I test it?
Do I have to download a whole new 3.0 image?

Regards!

Esteban A. Maringolo


2014-03-27 18:42 GMT-03:00 Sven Van Caekenberghe <[email protected]>:
> Johan, Esteban,
>
> Here is the first patch:
>
>   https://pharo.fogbugz.com/f/cases/13145/Speed-Up-DateAndTime-Arithmetic
>
> The other things that I tried (caching #epoch and switching the 
> #localTimeZone to an #asFixedTimeZone variant) are now almost irrelevant 
> since they no longer appear on the critical path while time profiling.
>
> Please let me know how it goes.
>
> Sven
>
> On 27 Mar 2014, at 20:18, Johan Brichau <[email protected]> wrote:
>
>> Sven,
>>
>> FYI, if you have the slice, I can run all our tests against it.
>> We do just a little bit of things with DateAndTime in a planning app :-) so 
>> potential issues might be exposed.
>>
>> Johan
>>
>> On 27 Mar 2014, at 15:17, Sven Van Caekenberghe <[email protected]> wrote:
>>
>>> Umbrella issue:
>>>
>>> https://pharo.fogbugz.com/f/cases/13139/Speed-Regressions-in-DateAndTime
>>>
>>> I rewrote (and simplified) DateAndTime>>#+ #- #=
>>> I added caching for #epoch
>>> I switched the localTimeZone to an #asFixedTimeZone variant
>>>
>>> My benchmark now runs 40x FASTER than in Pharo 1.4
>>>
>>> All Chronology tests remain green.
>>>
>>> I will upload slices when the funding goal of 1,000,000 USD is reached on 
>>> https://www.kickstarter.com/projects/1003214829/improve-pharo-dateandtime-performance
>>>
>>> PS: Half of the funds will go to Camillo for making DateAndTime work in UTC 
>>> internally ;-)
>>>
>>> PS2: I am not sure I am allowed to fix this so close to release, is it a 
>>> feature or a bug fix ? ;-)
>>>
>>> On 27 Mar 2014, at 12:29, Sven Van Caekenberghe <[email protected]> wrote:
>>>
>>>>
>>>> On 27 Mar 2014, at 11:55, Johan Brichau <[email protected]> wrote:
>>>>
>>>>> On 27 Mar 2014, at 11:50, Sven Van Caekenberghe <[email protected]> wrote:
>>>>>
>>>>>> It is slow(er) in 2 and fast(er) in 3, according to this discussion and 
>>>>>> my reading of the code. If you see the inverse, than please provide some 
>>>>>> details.
>>>>>
>>>>> We come from Pharo 1.4, where our timing benchmarks that use a lot of 
>>>>> DateAndTime operations run 4x faster (in Gemstone too).
>>>>> It is indeed faster in 3 than in 2. (I believe because of a wait in de 
>>>>> DateAndTime creation that has to do with clock precision).
>>>>>
>>>>> Johan
>>>>
>>>> An x4 (400%) slowdown sounds like an unacceptable regression to me.
>>>>
>>>> Could you maybe provide some benchmark ?
>>>>
>>>> I did a quick one (in Pharo 3):
>>>>
>>>> [
>>>> | timestamps |
>>>> timestamps := Array streamContents: [ :out |
>>>>     1024 timesRepeat: [ out nextPut: (DateAndTime now - (60*60*24*265) 
>>>> atRandom seconds) ] ].
>>>> 64 timesRepeat: [ timestamps sorted ].
>>>> timestamps sort.
>>>> timestamps collect: [ :each | timestamps includes: each ] ] timeToRun.
>>>>
>>>> => "0:00:00:09.491"
>>>>
>>>> In 1.4, this is indeed about 40 times faster:
>>>>
>>>> [
>>>> | timestamps |
>>>> timestamps := Array streamContents: [ :out |
>>>>     1024 timesRepeat: [ out nextPut: (DateAndTime now - (60*60*24*265) 
>>>> atRandom seconds) ] ].
>>>> 64 timesRepeat: [ timestamps sorted ].
>>>> timestamps sort.
>>>> timestamps collect: [ :each | timestamps includes: each ] ] timeToRun 
>>>> milliSeconds.
>>>>
>>>> => "0:00:00:00.228"
>>>>
>>>> For this test, ZTimestamp is 100 times faster:
>>>>
>>>> [
>>>> | timestamps |
>>>> timestamps := Array streamContents: [ :out |
>>>>     1024 timesRepeat: [ out nextPut: (ZTimestamp now - (60*60*24*265) 
>>>> atRandom seconds) ] ].
>>>> 64 timesRepeat: [ timestamps sorted ].
>>>> timestamps sort.
>>>> timestamps collect: [ :each | timestamps includes: each ] ] timeToRun.
>>>>
>>>> => "0:00:00:00.07"
>>>>
>>>> Looking at this with the Time Profiler, I see that DateAndTime>>#asSeconds 
>>>> (used in #<) takes 95% of the time. I am pretty sure we can fix this. I'll 
>>>> make an issue and slice later on.
>>>>
>>>> Sven
>>>>
>>>
>>>
>>>
>>> --
>>> Sven Van Caekenberghe
>>> Proudly supporting Pharo
>>> http://pharo.org
>>> http://association.pharo.org
>>> http://consortium.pharo.org
>>>
>>>
>>>
>>>
>>>
>>
>>
>
>

Reply via email to