Hi Henrik,

On Thu, Oct 1, 2015 at 2:18 AM, Henrik Nergaard <[email protected]>
wrote:

> Hi,
>
> Is there a simple way to query a variable to check how many methods that
> access it? (just want to know the size)
>
> This works, but it is quite slow.
> (Morph whichSelectorsAccess: #owner) size
> Morph withAllSubclasses inject: 0 into: [ :sum :class | sum + (class
> whichSelectorsAccess: #owner) size ]
>

If it is slow then there's some mistake.  Here are some measurements from
the relevant code in my Spur Squeak v 5.0 image:


| visited t |
visited := 0.
t := [self systemNavigation allMethodsSelect: [:m| visited := visited + 1.
 (m readsField: 66) or: (m writesField: 66)] localToPackage: #VMMaker]
timeToRun.
{t. visited. t * 1000.0 / visited } #(89 13553 6.566811775990556)


| visited t |
visited := 0.
t := [self systemNavigation allMethodsSelect: [:m| visited := visited + 1.
 (m readsField: 6) or: (m writesField: 6)] localToPackage: #VMMaker]
timeToRun.
{t. visited. t * 1000.0 / visited } #(85 13553 6.271674168080867)

So 85 milliseconds to analyse 13k methods, for a cost of 6 1/4 secs per
method.  I wouldn't call that slow.

The measurements for Morph and subclasses are even better:


| visited t |
visited := 0.
t := [self systemNavigation allMethodsSelect: [:m| visited := visited + 1.
 (m readsField: 66) or: (m writesField: 66)] localTo: Morph] timeToRun.
{t. visited. t * 1000.0 / visited } #(34 12434 2.7344378317516487)
| visited t |
visited := 0.
t := [self systemNavigation allMethodsSelect: [:m| visited := visited + 1.
 (m readsField: 6) or: (m writesField: 6)] localTo: Morph] timeToRun.
{t. visited. t * 1000.0 / visited } #(34 12434 2.7344378317516487)

34 milliseconds, 2 3/4 usecs per method.


This on a late 2012 Mac Mini 2.3GHz Core i7.


> <http://forum.world.st/file/n4852956/aMenuMorph%28885522432%29.png>
>
> Best regards,
> Henrik
>
>
>
> --
> View this message in context:
> http://forum.world.st/Querying-the-accessors-of-a-variable-tp4852956.html
> Sent from the Pharo Smalltalk Developers mailing list archive at
> Nabble.com.
>
>


-- 
_,,,^..^,,,_
best, Eliot

Reply via email to