IDE speedup

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

IDE speedup

Andres Valloud-4
Hello,

While working on hashing, I wrote this bit of new code to speed up some
of the tools.  I hope I didn't make a mistake... it seems to me it
should work fine.

Enjoy!
Andres.

'From Pharo1.0rc1 of 19 October 2009 [Latest update: #10491] on 1 November 2009 at 4:30:53 pm'!
"Change Set: OBRescueFilter-Speedup
Date: 1 November 2009
Author: SqR

Avoid linear search in OBRescueFilter>>cache:for: and O2RescueFilter>>cache:for:.  The speedup is most noticeable when e.g.: checking senders of #closeTo: and selecting something like CompiledMethod>>="!


!O2RescueFilter methodsFor: 'filtering' stamp: 'SqR 11/1/2009 16:30'!
cache: aCollection for: aNode
        | cached missing inclusionSet |
        cached _ cache at: aNode ifAbsent: [^ self initCache: aCollection for: aNode].
        cache at: aNode put: aCollection.
        missing _ rescued at: aNode ifAbsent: [Set new].
        inclusionSet := aCollection asSet.
        missing removeAllSuchThat: [:ea | inclusionSet includes: ea].
        cached do: [:ea | (inclusionSet includes: ea) ifFalse: [missing add: ea]].
        missing isEmpty ifFalse: [rescued at: aNode put: missing].
        ^ missing asArray! !


!OBRescueFilter methodsFor: 'filtering' stamp: 'SqR 11/1/2009 16:27'!
cache: aCollection for: aNode
        | cached missing inclusionSet |
        cached := cache
                at: aNode
                ifAbsent:
                        [ ^ self
                                initCache: aCollection
                                for: aNode ].
        cache
                at: aNode
                put: aCollection.
        missing := rescued
                at: aNode
                ifAbsent: [ Set new ].
        inclusionSet := aCollection asSet.
        missing removeAllSuchThat: [ :ea | inclusionSet includes: ea ].
        cached do: [ :ea | (inclusionSet includes: ea) ifFalse: [ missing add: ea ] ].
        missing isEmpty ifFalse:
                [ rescued
                        at: aNode
                        put: missing ].
        ^ missing asArray! !


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: IDE speedup

Lukas Renggli
Great. I included your changes in OB. It doesn't seem to break any tests.

Lukas

2009/11/2 Andres Valloud <[hidden email]>:

> Hello,
>
> While working on hashing, I wrote this bit of new code to speed up some of
> the tools.  I hope I didn't make a mistake... it seems to me it should work
> fine.
>
> Enjoy!
> Andres.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
Lukas Renggli
http://www.lukas-renggli.ch

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: IDE speedup

Andres Valloud-4
Wonderful --- happy to help!

Lukas Renggli wrote:

> Great. I included your changes in OB. It doesn't seem to break any tests.
>
> Lukas
>
> 2009/11/2 Andres Valloud <[hidden email]>:
>  
>> Hello,
>>
>> While working on hashing, I wrote this bit of new code to speed up some of
>> the tools.  I hope I didn't make a mistake... it seems to me it should work
>> fine.
>>
>> Enjoy!
>> Andres.
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>    
>
>
>
>  

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: IDE speedup

Stéphane Ducasse
In reply to this post by Andres Valloud-4
tx we love speed :)

Stef

On Nov 2, 2009, at 5:28 AM, Andres Valloud wrote:

> Hello,
>
> While working on hashing, I wrote this bit of new code to speed up  
> some of the tools.  I hope I didn't make a mistake... it seems to me  
> it should work fine.
>
> Enjoy!
> Andres.
> 'From Pharo1.0rc1 of 19 October 2009 [Latest update: #10491] on 1  
> November 2009 at 4:30:53 pm'!
> "Change Set: OBRescueFilter-Speedup
> Date: 1 November 2009
> Author: SqR
>
> Avoid linear search in OBRescueFilter>>cache:for: and  
> O2RescueFilter>>cache:for:.  The speedup is most noticeable when  
> e.g.: checking senders of #closeTo: and selecting something like  
> CompiledMethod>>="!
>
>
> !O2RescueFilter methodsFor: 'filtering' stamp: 'SqR 11/1/2009 16:30'!
> cache: aCollection for: aNode
> | cached missing inclusionSet |
> cached _ cache at: aNode ifAbsent: [^ self initCache: aCollection  
> for: aNode].
> cache at: aNode put: aCollection.
> missing _ rescued at: aNode ifAbsent: [Set new].
> inclusionSet := aCollection asSet.
> missing removeAllSuchThat: [:ea | inclusionSet includes: ea].
> cached do: [:ea | (inclusionSet includes: ea) ifFalse: [missing  
> add: ea]].
> missing isEmpty ifFalse: [rescued at: aNode put: missing].
> ^ missing asArray! !
>
>
> !OBRescueFilter methodsFor: 'filtering' stamp: 'SqR 11/1/2009 16:27'!
> cache: aCollection for: aNode
> | cached missing inclusionSet |
> cached := cache
> at: aNode
> ifAbsent:
> [ ^ self
> initCache: aCollection
> for: aNode ].
> cache
> at: aNode
> put: aCollection.
> missing := rescued
> at: aNode
> ifAbsent: [ Set new ].
> inclusionSet := aCollection asSet.
> missing removeAllSuchThat: [ :ea | inclusionSet includes: ea ].
> cached do: [ :ea | (inclusionSet includes: ea) ifFalse: [ missing  
> add: ea ] ].
> missing isEmpty ifFalse:
> [ rescued
> at: aNode
> put: missing ].
> ^ missing asArray! !
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project