browsing method speed

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

browsing method speed

vaidasd
Hello,
Noticed that loking through implementors, in 4.4 is slow. So,  tested
Browsing the onplementors of printOn: . To selecct in browser
different Reaction is instant in Squeak 3.6.  3.8.2 (VM 4.1.4)
4.1, 4.4 Cog

Reply | Threaded
Open this post in threaded view
|

Re: browsing method speed

vaidasd
Hello,
Sorry regarding previous email, accidentally hit Send.
Just wanted to report that changing focus while browsing implementers,
degraded a lot through releases. Checked 3.6 (instant), 3.8.1 (
slower, but ok, it was first release with unicode support AFAIK),  4.1
is so-so and 4.4 it takes ~1sec to look implementer on Cog.
On 4.4, Cog selected profiled gives:

 - 21614 tallies, 21630 msec.

**Tree**
--------------------------------
Process: other processes
--------------------------------
35.5% {7689ms} ProcessorScheduler class>>idleProcess
11.6% {2513ms} EventSensor>>eventTickler
  11.6% {2512ms} Delay>>wait
--------------------------------
Process: (40s) 49125: nil
--------------------------------
52.6% {11381ms} WorldState>>doOneCycleFor:
  50.0% {10815ms} WorldState>>doOneCycleNowFor:
    |48.4% {10469ms} HandMorph>>processEvents
    |  |48.4% {10467ms} HandMorph>>handleEvent:
    |  |  48.3% {10454ms} HandMorph>>sendKeyboardEvent:
    |  |    48.3% {10454ms} HandMorph>>sendEvent:focus:clear:
    |  |      48.3% {10454ms} HandMorph>>sendFocusEvent:to:clear:
    |  |        48.3% {10454ms} PluggableListMorphPlus(Morph)>>handleFocusEvent:
    |  |          48.3% {10454ms} PluggableListMorphPlus(Morph)>>handleEvent:
    |  |            48.3% {10454ms} KeyboardEvent>>sentTo:
    |  |              48.3% {10454ms}
PluggableListMorphPlus(Morph)>>handleKeystroke:
    |  |                48.3% {10454ms}
PluggableListMorphPlus(PluggableListMorph)>>keyStroke:
    |  |                  48.3% {10454ms}
PluggableListMorphPlus(PluggableListMorph)>>specialKeyPressed:
    |  |                    48.3% {10454ms}
PluggableListMorphPlus(PluggableListMorph)>>changeModelSelection:
    |  |                      48.3% {10454ms} MessageSet>>messageListIndex:
    |  |                        29.9% {6474ms}
MessageSet(CodeHolder)>>contentsChanged
    |  |                          |18.5% {4001ms}
MessageSet(Object)>>contentsChanged
    |  |                          |  |18.5% {4001ms}
MessageSet(Object)>>changed:
    |  |                          |  |  18.5% {3997ms}
PluggableTextMorphPlus>>update:
    |  |                          |  |    18.5% {3997ms}
PluggableTextMorphPlus(PluggableTextMorph)>>update:
    |  |                          |  |      18.4% {3977ms}
PluggableTextMorphPlus(PluggableTextMorph)>>getText
    |  |                          |  |        18.4% {3977ms}
MessageSet>>contents
    |  |                          |  |          18.4% {3977ms}
MessageSet(CodeHolder)>>editContents
    |  |                          |  |            18.4% {3977ms}
MessageSet>>selectedMessage
    |  |                          |  |              9.6% {2087ms}
ActionSequence class(Behavior)>>sourceMethodAt:ifAbsent:
    |  |                          |  |                |9.6% {2087ms}
ActionSequence class(Behavior)>>sourceCodeAt:ifAbsent:
    |  |                          |  |                |  9.6% {2087ms}
CompiledMethod>>getSourceFor:in:
    |  |                          |  |                |    9.6%
{2087ms} CompiledMethod>>getSourceFromFileAt:
    |  |                          |  |                |      9.6%
{2087ms} RemoteString>>text
    |  |                          |  |                |        9.6%
{2087ms} CurrentReadOnlySourceFiles class>>at:
    |  |                          |  |                |          9.6%
{2087ms} CurrentReadOnlySourceFiles class(Exception class)>>signal
    |  |                          |  |                |
9.6% {2087ms} CurrentReadOnlySourceFiles(Exception)>>signal
    |  |                          |  |                |
9.6% {2087ms} MethodContext(ContextPart)>>handleSignal:
    |  |                          |  |                |
9.6% {2086ms} MethodContext(ContextPart)>>handleSignal:
    |  |                          |  |                |
  9.6% {2086ms} MethodContext(ContextPart)>>handleSignal:
    |  |                          |  |                |
    9.6% {2086ms} UndefinedObject>>handleSignal:
    |  |                          |  |                |
      9.6% {2086ms} CurrentReadOnlySourceFiles>>defaultAction
    |  |                          |  |                |
        9.6% {2086ms}
MultiByteFileStream(StandardFileStream)>>readOnlyCopy
    |  |                          |  |                |
          9.6% {2086ms} MultiByteFileStream class(StandardFileStream
class)>>readOnlyFileNamed:
    |  |                          |  |                |
            9.6% {2086ms} MultiByteFileStream>>open:forWrite:
    |  |                          |  |                |
              9.6% {2086ms}
MultiByteFileStream(StandardFileStream)>>open:forWrite:
    |  |                          |  |                |
                9.6% {2084ms} primitives
    |  |                          |  |              8.7% {1889ms}
MessageSet(CodeHolder)>>sourceStringPrettifiedAndDiffed
    |  |                          |  |                8.7% {1887ms}
ActionSequence class(Behavior)>>ultimateSourceCodeAt:ifAbsent:
    |  |                          |  |                  8.7% {1887ms}
ActionSequence class(Behavior)>>sourceCodeAt:ifAbsent:
    |  |                          |  |                    8.7%
{1887ms} CompiledMethod>>getSourceFor:in:
    |  |                          |  |                      8.7%
{1887ms} CompiledMethod>>getSourceFromFileAt:
    |  |                          |  |                        8.7%
{1887ms} RemoteString>>text
    |  |                          |  |                          8.7%
{1886ms} CurrentReadOnlySourceFiles class>>at:
    |  |                          |  |                            8.7%
{1886ms} CurrentReadOnlySourceFiles class(Exception class)>>signal
    |  |                          |  |
8.7% {1886ms} CurrentReadOnlySourceFiles(Exception)>>signal
    |  |                          |  |
8.7% {1886ms} MethodContext(ContextPart)>>handleSignal:
    |  |                          |  |
 8.7% {1886ms} MethodContext(ContextPart)>>handleSignal:
    |  |                          |  |
   8.7% {1886ms} MethodContext(ContextPart)>>handleSignal:
    |  |                          |  |
     8.7% {1886ms} UndefinedObject>>handleSignal:
    |  |                          |  |
       8.7% {1886ms} CurrentReadOnlySourceFiles>>defaultAction
    |  |                          |  |
         8.7% {1886ms}
MultiByteFileStream(StandardFileStream)>>readOnlyCopy
    |  |                          |  |
           8.7% {1886ms} MultiByteFileStream class(StandardFileStream
class)>>readOnlyFileNamed:
    |  |                          |  |
             8.7% {1886ms} MultiByteFileStream>>open:forWrite:
    |  |                          |  |
               8.7% {1885ms}
MultiByteFileStream(StandardFileStream)>>open:forWrite:
    |  |                          |11.4% {2473ms} MessageSet(Object)>>changed:
    |  |                          |  11.4% {2470ms}
PluggableTextMorphPlus>>update:
    |  |                          |    11.4% {2470ms}
PluggableTextMorphPlus(PluggableTextMorph)>>update:
    |  |                          |      11.4% {2457ms}
PluggableTextMorphPlus(PluggableTextMorph)>>getText
    |  |                          |        11.4% {2457ms}
MessageSet(CodeHolder)>>annotation
    |  |                          |          11.4% {2456ms}
MessageSet(CodeHolder)>>annotationForSelector:ofClass:
    |  |                          |            10.6% {2301ms}
MessageSet(StringHolder)>>timeStamp
    |  |                          |              10.6% {2301ms}
Utilities class>>timeStampForMethod:
    |  |                          |                10.6% {2301ms}
CompiledMethod>>timeStamp
    |  |                          |                  10.6% {2297ms}
CompiledMethod>>preamble
    |  |                          |                    10.6% {2296ms}
CurrentReadOnlySourceFiles class>>at:
    |  |                          |                      10.6%
{2296ms} CurrentReadOnlySourceFiles class(Exception class)>>signal
    |  |                          |                        10.6%
{2296ms} CurrentReadOnlySourceFiles(Exception)>>signal
    |  |                          |                          10.6%
{2296ms} MethodContext(ContextPart)>>handleSignal:
    |  |                          |                            10.6%
{2296ms} MethodContext(ContextPart)>>handleSignal:
    |  |                          |                              10.6%
{2296ms} UndefinedObject>>handleSignal:
    |  |                          |
10.6% {2296ms} CurrentReadOnlySourceFiles>>defaultAction
    |  |                          |
10.6% {2296ms} MultiByteFileStream(StandardFileStream)>>readOnlyCopy
    |  |                          |
10.6% {2296ms} MultiByteFileStream class(StandardFileStream
class)>>readOnlyFileNamed:
    |  |                          |
  10.6% {2296ms} MultiByteFileStream>>open:forWrite:
    |  |                          |
    10.6% {2296ms}
MultiByteFileStream(StandardFileStream)>>open:forWrite:
    |  |                          |
      10.6% {2295ms} primitives
    |  |                        18.4% {3970ms} MessageSet>>selectedMessage
    |  |                          10.1% {2195ms} ActionSequence
class(Behavior)>>sourceMethodAt:ifAbsent:
    |  |                            |10.1% {2193ms} ActionSequence
class(Behavior)>>sourceCodeAt:ifAbsent:
    |  |                            |  10.1% {2193ms}
CompiledMethod>>getSourceFor:in:
    |  |                            |    10.1% {2193ms}
CompiledMethod>>getSourceFromFileAt:
    |  |                            |      10.1% {2193ms} RemoteString>>text
    |  |                            |        9.5% {2057ms}
CurrentReadOnlySourceFiles class>>at:
    |  |                            |          9.5% {2056ms}
CurrentReadOnlySourceFiles class(Exception class)>>signal
    |  |                            |            9.5% {2056ms}
CurrentReadOnlySourceFiles(Exception)>>signal
    |  |                            |              9.5% {2056ms}
MethodContext(ContextPart)>>handleSignal:
    |  |                            |                9.5% {2056ms}
MethodContext(ContextPart)>>handleSignal:
    |  |                            |                  9.5% {2056ms}
MethodContext(ContextPart)>>handleSignal:
    |  |                            |                    9.5% {2056ms}
UndefinedObject>>handleSignal:
    |  |                            |                      9.5%
{2056ms} CurrentReadOnlySourceFiles>>defaultAction
    |  |                            |                        9.5%
{2056ms} MultiByteFileStream(StandardFileStream)>>readOnlyCopy
    |  |                            |                          9.5%
{2056ms} MultiByteFileStream class(StandardFileStream
class)>>readOnlyFileNamed:
    |  |                            |                            9.5%
{2056ms} MultiByteFileStream>>open:forWrite:
    |  |                            |
9.5% {2056ms} MultiByteFileStream(StandardFileStream)>>open:forWrite:
    |  |                          8.2% {1774ms}
MessageSet(CodeHolder)>>sourceStringPrettifiedAndDiffed
    |  |                            8.2% {1773ms} ActionSequence
class(Behavior)>>ultimateSourceCodeAt:ifAbsent:
    |  |                              8.2% {1773ms} ActionSequence
class(Behavior)>>sourceCodeAt:ifAbsent:
    |  |                                8.2% {1773ms}
CompiledMethod>>getSourceFor:in:
    |  |                                  8.2% {1772ms}
CompiledMethod>>getSourceFromFileAt:
    |  |                                    8.2% {1772ms} RemoteString>>text
    |  |                                      8.2% {1771ms}
CurrentReadOnlySourceFiles class>>at:
    |  |                                        8.2% {1771ms}
CurrentReadOnlySourceFiles class(Exception class)>>signal
    |  |                                          8.2% {1771ms}
CurrentReadOnlySourceFiles(Exception)>>signal
    |  |                                            8.2% {1771ms}
MethodContext(ContextPart)>>handleSignal:
    |  |                                              8.2% {1771ms}
MethodContext(ContextPart)>>handleSignal:
    |  |                                                8.2% {1771ms}
MethodContext(ContextPart)>>handleSignal:
    |  |                                                  8.2%
{1771ms} UndefinedObject>>handleSignal:
    |  |                                                    8.2%
{1771ms} CurrentReadOnlySourceFiles>>defaultAction
    |  |                                                      8.2%
{1771ms} MultiByteFileStream(StandardFileStream)>>readOnlyCopy
    |  |                                                        8.2%
{1771ms} MultiByteFileStream class(StandardFileStream
class)>>readOnlyFileNamed:
    |  |                                                          8.2%
{1771ms} MultiByteFileStream>>open:forWrite:
    |  |
8.2% {1771ms} MultiByteFileStream(StandardFileStream)>>open:forWrite:
    |  |
8.2% {1770ms} primitives
    |1.6% {343ms} WorldState>>displayWorldSafely:
    |  1.6% {343ms} PasteUpMorph>>displayWorld
    |    1.6% {343ms} PasteUpMorph>>privateOuterDisplayWorld
    |      1.6% {343ms} WorldState>>displayWorld:submorphs:
    |        1.5% {315ms} WorldState>>drawWorld:submorphs:invalidAreasOn:
    |          1.4% {295ms} FormCanvas(Canvas)>>fullDrawMorph:
    |            1.4% {295ms} FormCanvas(Canvas)>>fullDraw:
    |              1.4% {295ms} DockingBarMorph(Morph)>>fullDrawOn:
  2.6% {566ms} WorldState>>interCyclePause:
    2.6% {566ms} Delay>>wait
      2.6% {565ms} primitives

**Leaves**
46.6% {10089ms} MultiByteFileStream(StandardFileStream)>>open:forWrite:
35.6% {7693ms} ProcessorScheduler class>>idleProcess
14.2% {3077ms} Delay>>wait

**Memory**
        old +84,176 bytes
        young -1,132,448 bytes
        used -1,048,272 bytes
        free +1,048,272 bytes

**GCs**
        full 0 totalling 0 ms (0% uptime)
        incr 28 totalling 44 ms (0.2% uptime), avg 1.6 ms
        tenures 1 (avg 28 GCs/tenure)
        root table 0 overflows

Vaidotas.

Reply | Threaded
Open this post in threaded view
|

Re: browsing method speed

Frank Shearar-3
On 20 January 2013 18:20, Vaidotas Didžbalis <[hidden email]> wrote:
> Hello,
> Sorry regarding previous email, accidentally hit Send.
> Just wanted to report that changing focus while browsing implementers,
> degraded a lot through releases. Checked 3.6 (instant), 3.8.1 (
> slower, but ok, it was first release with unicode support AFAIK),  4.1
> is so-so and 4.4 it takes ~1sec to look implementer on Cog.

Ah, I was about to ask if you had any numbers :)

I tried hopping between methods, and couldn't really see any
difference in speed between 4.3 and 4.4.

What I _did_ find was that choosing a method by clicking on it was
noticeably slower ( than choosing a new method by using the up or down
arrows, which is quite interesting.

frank

> On 4.4, Cog selected profiled gives:
>
>  - 21614 tallies, 21630 msec.
>
> **Tree**
> --------------------------------
> Process: other processes
> --------------------------------
> 35.5% {7689ms} ProcessorScheduler class>>idleProcess
> 11.6% {2513ms} EventSensor>>eventTickler
>   11.6% {2512ms} Delay>>wait
> --------------------------------
> Process: (40s) 49125: nil
> --------------------------------
> 52.6% {11381ms} WorldState>>doOneCycleFor:
>   50.0% {10815ms} WorldState>>doOneCycleNowFor:
>     |48.4% {10469ms} HandMorph>>processEvents
>     |  |48.4% {10467ms} HandMorph>>handleEvent:
>     |  |  48.3% {10454ms} HandMorph>>sendKeyboardEvent:
>     |  |    48.3% {10454ms} HandMorph>>sendEvent:focus:clear:
>     |  |      48.3% {10454ms} HandMorph>>sendFocusEvent:to:clear:
>     |  |        48.3% {10454ms} PluggableListMorphPlus(Morph)>>handleFocusEvent:
>     |  |          48.3% {10454ms} PluggableListMorphPlus(Morph)>>handleEvent:
>     |  |            48.3% {10454ms} KeyboardEvent>>sentTo:
>     |  |              48.3% {10454ms}
> PluggableListMorphPlus(Morph)>>handleKeystroke:
>     |  |                48.3% {10454ms}
> PluggableListMorphPlus(PluggableListMorph)>>keyStroke:
>     |  |                  48.3% {10454ms}
> PluggableListMorphPlus(PluggableListMorph)>>specialKeyPressed:
>     |  |                    48.3% {10454ms}
> PluggableListMorphPlus(PluggableListMorph)>>changeModelSelection:
>     |  |                      48.3% {10454ms} MessageSet>>messageListIndex:
>     |  |                        29.9% {6474ms}
> MessageSet(CodeHolder)>>contentsChanged
>     |  |                          |18.5% {4001ms}
> MessageSet(Object)>>contentsChanged
>     |  |                          |  |18.5% {4001ms}
> MessageSet(Object)>>changed:
>     |  |                          |  |  18.5% {3997ms}
> PluggableTextMorphPlus>>update:
>     |  |                          |  |    18.5% {3997ms}
> PluggableTextMorphPlus(PluggableTextMorph)>>update:
>     |  |                          |  |      18.4% {3977ms}
> PluggableTextMorphPlus(PluggableTextMorph)>>getText
>     |  |                          |  |        18.4% {3977ms}
> MessageSet>>contents
>     |  |                          |  |          18.4% {3977ms}
> MessageSet(CodeHolder)>>editContents
>     |  |                          |  |            18.4% {3977ms}
> MessageSet>>selectedMessage
>     |  |                          |  |              9.6% {2087ms}
> ActionSequence class(Behavior)>>sourceMethodAt:ifAbsent:
>     |  |                          |  |                |9.6% {2087ms}
> ActionSequence class(Behavior)>>sourceCodeAt:ifAbsent:
>     |  |                          |  |                |  9.6% {2087ms}
> CompiledMethod>>getSourceFor:in:
>     |  |                          |  |                |    9.6%
> {2087ms} CompiledMethod>>getSourceFromFileAt:
>     |  |                          |  |                |      9.6%
> {2087ms} RemoteString>>text
>     |  |                          |  |                |        9.6%
> {2087ms} CurrentReadOnlySourceFiles class>>at:
>     |  |                          |  |                |          9.6%
> {2087ms} CurrentReadOnlySourceFiles class(Exception class)>>signal
>     |  |                          |  |                |
> 9.6% {2087ms} CurrentReadOnlySourceFiles(Exception)>>signal
>     |  |                          |  |                |
> 9.6% {2087ms} MethodContext(ContextPart)>>handleSignal:
>     |  |                          |  |                |
> 9.6% {2086ms} MethodContext(ContextPart)>>handleSignal:
>     |  |                          |  |                |
>   9.6% {2086ms} MethodContext(ContextPart)>>handleSignal:
>     |  |                          |  |                |
>     9.6% {2086ms} UndefinedObject>>handleSignal:
>     |  |                          |  |                |
>       9.6% {2086ms} CurrentReadOnlySourceFiles>>defaultAction
>     |  |                          |  |                |
>         9.6% {2086ms}
> MultiByteFileStream(StandardFileStream)>>readOnlyCopy
>     |  |                          |  |                |
>           9.6% {2086ms} MultiByteFileStream class(StandardFileStream
> class)>>readOnlyFileNamed:
>     |  |                          |  |                |
>             9.6% {2086ms} MultiByteFileStream>>open:forWrite:
>     |  |                          |  |                |
>               9.6% {2086ms}
> MultiByteFileStream(StandardFileStream)>>open:forWrite:
>     |  |                          |  |                |
>                 9.6% {2084ms} primitives
>     |  |                          |  |              8.7% {1889ms}
> MessageSet(CodeHolder)>>sourceStringPrettifiedAndDiffed
>     |  |                          |  |                8.7% {1887ms}
> ActionSequence class(Behavior)>>ultimateSourceCodeAt:ifAbsent:
>     |  |                          |  |                  8.7% {1887ms}
> ActionSequence class(Behavior)>>sourceCodeAt:ifAbsent:
>     |  |                          |  |                    8.7%
> {1887ms} CompiledMethod>>getSourceFor:in:
>     |  |                          |  |                      8.7%
> {1887ms} CompiledMethod>>getSourceFromFileAt:
>     |  |                          |  |                        8.7%
> {1887ms} RemoteString>>text
>     |  |                          |  |                          8.7%
> {1886ms} CurrentReadOnlySourceFiles class>>at:
>     |  |                          |  |                            8.7%
> {1886ms} CurrentReadOnlySourceFiles class(Exception class)>>signal
>     |  |                          |  |
> 8.7% {1886ms} CurrentReadOnlySourceFiles(Exception)>>signal
>     |  |                          |  |
> 8.7% {1886ms} MethodContext(ContextPart)>>handleSignal:
>     |  |                          |  |
>  8.7% {1886ms} MethodContext(ContextPart)>>handleSignal:
>     |  |                          |  |
>    8.7% {1886ms} MethodContext(ContextPart)>>handleSignal:
>     |  |                          |  |
>      8.7% {1886ms} UndefinedObject>>handleSignal:
>     |  |                          |  |
>        8.7% {1886ms} CurrentReadOnlySourceFiles>>defaultAction
>     |  |                          |  |
>          8.7% {1886ms}
> MultiByteFileStream(StandardFileStream)>>readOnlyCopy
>     |  |                          |  |
>            8.7% {1886ms} MultiByteFileStream class(StandardFileStream
> class)>>readOnlyFileNamed:
>     |  |                          |  |
>              8.7% {1886ms} MultiByteFileStream>>open:forWrite:
>     |  |                          |  |
>                8.7% {1885ms}
> MultiByteFileStream(StandardFileStream)>>open:forWrite:
>     |  |                          |11.4% {2473ms} MessageSet(Object)>>changed:
>     |  |                          |  11.4% {2470ms}
> PluggableTextMorphPlus>>update:
>     |  |                          |    11.4% {2470ms}
> PluggableTextMorphPlus(PluggableTextMorph)>>update:
>     |  |                          |      11.4% {2457ms}
> PluggableTextMorphPlus(PluggableTextMorph)>>getText
>     |  |                          |        11.4% {2457ms}
> MessageSet(CodeHolder)>>annotation
>     |  |                          |          11.4% {2456ms}
> MessageSet(CodeHolder)>>annotationForSelector:ofClass:
>     |  |                          |            10.6% {2301ms}
> MessageSet(StringHolder)>>timeStamp
>     |  |                          |              10.6% {2301ms}
> Utilities class>>timeStampForMethod:
>     |  |                          |                10.6% {2301ms}
> CompiledMethod>>timeStamp
>     |  |                          |                  10.6% {2297ms}
> CompiledMethod>>preamble
>     |  |                          |                    10.6% {2296ms}
> CurrentReadOnlySourceFiles class>>at:
>     |  |                          |                      10.6%
> {2296ms} CurrentReadOnlySourceFiles class(Exception class)>>signal
>     |  |                          |                        10.6%
> {2296ms} CurrentReadOnlySourceFiles(Exception)>>signal
>     |  |                          |                          10.6%
> {2296ms} MethodContext(ContextPart)>>handleSignal:
>     |  |                          |                            10.6%
> {2296ms} MethodContext(ContextPart)>>handleSignal:
>     |  |                          |                              10.6%
> {2296ms} UndefinedObject>>handleSignal:
>     |  |                          |
> 10.6% {2296ms} CurrentReadOnlySourceFiles>>defaultAction
>     |  |                          |
> 10.6% {2296ms} MultiByteFileStream(StandardFileStream)>>readOnlyCopy
>     |  |                          |
> 10.6% {2296ms} MultiByteFileStream class(StandardFileStream
> class)>>readOnlyFileNamed:
>     |  |                          |
>   10.6% {2296ms} MultiByteFileStream>>open:forWrite:
>     |  |                          |
>     10.6% {2296ms}
> MultiByteFileStream(StandardFileStream)>>open:forWrite:
>     |  |                          |
>       10.6% {2295ms} primitives
>     |  |                        18.4% {3970ms} MessageSet>>selectedMessage
>     |  |                          10.1% {2195ms} ActionSequence
> class(Behavior)>>sourceMethodAt:ifAbsent:
>     |  |                            |10.1% {2193ms} ActionSequence
> class(Behavior)>>sourceCodeAt:ifAbsent:
>     |  |                            |  10.1% {2193ms}
> CompiledMethod>>getSourceFor:in:
>     |  |                            |    10.1% {2193ms}
> CompiledMethod>>getSourceFromFileAt:
>     |  |                            |      10.1% {2193ms} RemoteString>>text
>     |  |                            |        9.5% {2057ms}
> CurrentReadOnlySourceFiles class>>at:
>     |  |                            |          9.5% {2056ms}
> CurrentReadOnlySourceFiles class(Exception class)>>signal
>     |  |                            |            9.5% {2056ms}
> CurrentReadOnlySourceFiles(Exception)>>signal
>     |  |                            |              9.5% {2056ms}
> MethodContext(ContextPart)>>handleSignal:
>     |  |                            |                9.5% {2056ms}
> MethodContext(ContextPart)>>handleSignal:
>     |  |                            |                  9.5% {2056ms}
> MethodContext(ContextPart)>>handleSignal:
>     |  |                            |                    9.5% {2056ms}
> UndefinedObject>>handleSignal:
>     |  |                            |                      9.5%
> {2056ms} CurrentReadOnlySourceFiles>>defaultAction
>     |  |                            |                        9.5%
> {2056ms} MultiByteFileStream(StandardFileStream)>>readOnlyCopy
>     |  |                            |                          9.5%
> {2056ms} MultiByteFileStream class(StandardFileStream
> class)>>readOnlyFileNamed:
>     |  |                            |                            9.5%
> {2056ms} MultiByteFileStream>>open:forWrite:
>     |  |                            |
> 9.5% {2056ms} MultiByteFileStream(StandardFileStream)>>open:forWrite:
>     |  |                          8.2% {1774ms}
> MessageSet(CodeHolder)>>sourceStringPrettifiedAndDiffed
>     |  |                            8.2% {1773ms} ActionSequence
> class(Behavior)>>ultimateSourceCodeAt:ifAbsent:
>     |  |                              8.2% {1773ms} ActionSequence
> class(Behavior)>>sourceCodeAt:ifAbsent:
>     |  |                                8.2% {1773ms}
> CompiledMethod>>getSourceFor:in:
>     |  |                                  8.2% {1772ms}
> CompiledMethod>>getSourceFromFileAt:
>     |  |                                    8.2% {1772ms} RemoteString>>text
>     |  |                                      8.2% {1771ms}
> CurrentReadOnlySourceFiles class>>at:
>     |  |                                        8.2% {1771ms}
> CurrentReadOnlySourceFiles class(Exception class)>>signal
>     |  |                                          8.2% {1771ms}
> CurrentReadOnlySourceFiles(Exception)>>signal
>     |  |                                            8.2% {1771ms}
> MethodContext(ContextPart)>>handleSignal:
>     |  |                                              8.2% {1771ms}
> MethodContext(ContextPart)>>handleSignal:
>     |  |                                                8.2% {1771ms}
> MethodContext(ContextPart)>>handleSignal:
>     |  |                                                  8.2%
> {1771ms} UndefinedObject>>handleSignal:
>     |  |                                                    8.2%
> {1771ms} CurrentReadOnlySourceFiles>>defaultAction
>     |  |                                                      8.2%
> {1771ms} MultiByteFileStream(StandardFileStream)>>readOnlyCopy
>     |  |                                                        8.2%
> {1771ms} MultiByteFileStream class(StandardFileStream
> class)>>readOnlyFileNamed:
>     |  |                                                          8.2%
> {1771ms} MultiByteFileStream>>open:forWrite:
>     |  |
> 8.2% {1771ms} MultiByteFileStream(StandardFileStream)>>open:forWrite:
>     |  |
> 8.2% {1770ms} primitives
>     |1.6% {343ms} WorldState>>displayWorldSafely:
>     |  1.6% {343ms} PasteUpMorph>>displayWorld
>     |    1.6% {343ms} PasteUpMorph>>privateOuterDisplayWorld
>     |      1.6% {343ms} WorldState>>displayWorld:submorphs:
>     |        1.5% {315ms} WorldState>>drawWorld:submorphs:invalidAreasOn:
>     |          1.4% {295ms} FormCanvas(Canvas)>>fullDrawMorph:
>     |            1.4% {295ms} FormCanvas(Canvas)>>fullDraw:
>     |              1.4% {295ms} DockingBarMorph(Morph)>>fullDrawOn:
>   2.6% {566ms} WorldState>>interCyclePause:
>     2.6% {566ms} Delay>>wait
>       2.6% {565ms} primitives
>
> **Leaves**
> 46.6% {10089ms} MultiByteFileStream(StandardFileStream)>>open:forWrite:
> 35.6% {7693ms} ProcessorScheduler class>>idleProcess
> 14.2% {3077ms} Delay>>wait
>
> **Memory**
>         old                     +84,176 bytes
>         young           -1,132,448 bytes
>         used            -1,048,272 bytes
>         free            +1,048,272 bytes
>
> **GCs**
>         full                    0 totalling 0 ms (0% uptime)
>         incr                    28 totalling 44 ms (0.2% uptime), avg 1.6 ms
>         tenures         1 (avg 28 GCs/tenure)
>         root table      0 overflows
>
> Vaidotas.
>

Reply | Threaded
Open this post in threaded view
|

Re: browsing method speed

Bob Arning-2
Once upon a time that was the case when the mousedown logic paused a bit (to see if drag was starting IIRC) before making the selection.

On 1/20/13 1:23 PM, Frank Shearar wrote:
What I _did_ find was that choosing a method by clicking on it was
noticeably slower ( than choosing a new method by using the up or down
arrows, which is quite interesting.



Reply | Threaded
Open this post in threaded view
|

Re: browsing method speed

Bert Freudenberg
In reply to this post by Frank Shearar-3

On 20.01.2013, at 10:23, Frank Shearar <[hidden email]> wrote:

> On 20 January 2013 18:20, Vaidotas Didžbalis <[hidden email]> wrote:
>> Hello,
>> Sorry regarding previous email, accidentally hit Send.
>> Just wanted to report that changing focus while browsing implementers,
>> degraded a lot through releases. Checked 3.6 (instant), 3.8.1 (
>> slower, but ok, it was first release with unicode support AFAIK),  4.1
>> is so-so and 4.4 it takes ~1sec to look implementer on Cog.
>
> Ah, I was about to ask if you had any numbers :)
>
> I tried hopping between methods, and couldn't really see any
> difference in speed between 4.3 and 4.4.
>
> What I _did_ find was that choosing a method by clicking on it was
> noticeably slower ( than choosing a new method by using the up or down
> arrows, which is quite interesting.
>
> frank


Seems instantaneous for me on Mac. Might be a platform issue? Which VM, which OS?

- Bert -



Reply | Threaded
Open this post in threaded view
|

Re: browsing method speed

vaidasd
> Seems instantaneous for me on Mac. Might be a platform issue? Which VM, which OS?
>
> - Bert -
 Windows 7 64 bit, Cog Dec 12, 2012
bottleneck in method
CurrentReadOnlySourceFiles>>defaultAction
slow part is accessing changes file:
time to run: [SourceFiles second readOnlyCopy]  is ~ 100 ms. Caching
is introduced here some time after 4.1. On XP 32 bit without antivirus
there is no issue.. aha, perhaps this is antivirus related. Quite
common in corporate policy in environments today. Will try tomorrow to
disable antivirus and report.
Vaidas

Reply | Threaded
Open this post in threaded view
|

Re: browsing method speed

Eliot Miranda-2
IMO the readOnlyCopy logic is broken.  e should modify SourceFiles to keep a *single* read-only copy alongside each writable copy, and supply that when asked for a read-only copy.  The read-only copy is effectively a cache.  It needs to be flushed when a source file changes and when the image starts up.  Again I have code for this from a modified 3.9 image if anyone is interested.  IMO this is important.


On Mon, Jan 21, 2013 at 11:35 AM, Vaidotas Didžbalis <[hidden email]> wrote:
> Seems instantaneous for me on Mac. Might be a platform issue? Which VM, which OS?
>
> - Bert -
 Windows 7 64 bit, Cog Dec 12, 2012
bottleneck in method
CurrentReadOnlySourceFiles>>defaultAction
slow part is accessing changes file:
time to run: [SourceFiles second readOnlyCopy]  is ~ 100 ms. Caching
is introduced here some time after 4.1. On XP 32 bit without antivirus
there is no issue.. aha, perhaps this is antivirus related. Quite
common in corporate policy in environments today. Will try tomorrow to
disable antivirus and report.
Vaidas




--
best,
Eliot


Reply | Threaded
Open this post in threaded view
|

Re: browsing method speed

Bert Freudenberg
How do we make that single copy thread-safe?

- Bert -

On 21.01.2013, at 15:06, Eliot Miranda <[hidden email]> wrote:

IMO the readOnlyCopy logic is broken.  e should modify SourceFiles to keep a *single* read-only copy alongside each writable copy, and supply that when asked for a read-only copy.  The read-only copy is effectively a cache.  It needs to be flushed when a source file changes and when the image starts up.  Again I have code for this from a modified 3.9 image if anyone is interested.  IMO this is important.


On Mon, Jan 21, 2013 at 11:35 AM, Vaidotas Didžbalis <[hidden email]> wrote:
> Seems instantaneous for me on Mac. Might be a platform issue? Which VM, which OS?
>
> - Bert -
 Windows 7 64 bit, Cog Dec 12, 2012
bottleneck in method
CurrentReadOnlySourceFiles>>defaultAction
slow part is accessing changes file:
time to run: [SourceFiles second readOnlyCopy]  is ~ 100 ms. Caching
is introduced here some time after 4.1. On XP 32 bit without antivirus
there is no issue.. aha, perhaps this is antivirus related. Quite
common in corporate policy in environments today. Will try tomorrow to
disable antivirus and report.
Vaidas




--
best,
Eliot




Reply | Threaded
Open this post in threaded view
|

Re: browsing method speed

timrowledge

On 21-01-2013, at 3:21 PM, Bert Freudenberg <[hidden email]> wrote:

> How do we make that single copy thread-safe?

If you refer to the problem that I am familiar with, by getting rid of the four primitives primitiveFileRead, primitiveFileWrite, primitiveFileGetPosition & primitiveFileSetPosition; replace them with primitiveFileReadFileIDFilePtrIntoArrayStartingAtCount & primitiveFileWriteFileIDFilePtrFromArrayStartingAtCount

That way there is no gap between setting the file position and reading/writing. Some OS's (coughRISC OS) have this as the base api anyway.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
"How many Teela Browns does it take to change a lightbulb?" "Stupid question."



Reply | Threaded
Open this post in threaded view
|

Re: browsing method speed

Eliot Miranda-2
In reply to this post by Bert Freudenberg



On Mon, Jan 21, 2013 at 3:21 PM, Bert Freudenberg <[hidden email]> wrote:
How do we make that single copy thread-safe?

IMO the only context in which its really important that source access is thread-safe is the debugger; one is debugging source access and the Debugger is fetching source from methods as one is debugging, hence screwing up the source access one is debugging.  So what if the Debugger took care to save the readOnlyCopy's position around each source fetch and restored it?  Wouldn't that be good enough and allow one to get away without making it thread-safe?


- Bert -

On 21.01.2013, at 15:06, Eliot Miranda <[hidden email]> wrote:

IMO the readOnlyCopy logic is broken.  e should modify SourceFiles to keep a *single* read-only copy alongside each writable copy, and supply that when asked for a read-only copy.  The read-only copy is effectively a cache.  It needs to be flushed when a source file changes and when the image starts up.  Again I have code for this from a modified 3.9 image if anyone is interested.  IMO this is important.


On Mon, Jan 21, 2013 at 11:35 AM, Vaidotas Didžbalis <[hidden email]> wrote:
> Seems instantaneous for me on Mac. Might be a platform issue? Which VM, which OS?
>
> - Bert -
 Windows 7 64 bit, Cog Dec 12, 2012
bottleneck in method
CurrentReadOnlySourceFiles>>defaultAction
slow part is accessing changes file:
time to run: [SourceFiles second readOnlyCopy]  is ~ 100 ms. Caching
is introduced here some time after 4.1. On XP 32 bit without antivirus
there is no issue.. aha, perhaps this is antivirus related. Quite
common in corporate policy in environments today. Will try tomorrow to
disable antivirus and report.
Vaidas




--
best,
Eliot








--
best,
Eliot


Reply | Threaded
Open this post in threaded view
|

Re: browsing method speed

Eliot Miranda-2
In reply to this post by timrowledge
Hi Tim,


On Mon, Jan 21, 2013 at 3:42 PM, tim Rowledge <[hidden email]> wrote:

On 21-01-2013, at 3:21 PM, Bert Freudenberg <[hidden email]> wrote:

> How do we make that single copy thread-safe?

If you refer to the problem that I am familiar with, by getting rid of the four primitives primitiveFileRead, primitiveFileWrite, primitiveFileGetPosition & primitiveFileSetPosition; replace them with primitiveFileReadFileIDFilePtrIntoArrayStartingAtCount & primitiveFileWriteFileIDFilePtrFromArrayStartingAtCount

Alas it bites at a slightly higher-level than that also.  Yes, the decoupling of positioning and reading is a problem for thread-safety.  But so is the single buffer and the single position.  e.g. if one were to call your unified primitive below to fill the buffer that wouldn't prevent another thread reading at a different position into the same buffer and trashing the contents from the POV of the first thread. Since the programming tools are essentially single-threaded it's not *that* bad a problem, unless you're debugging source access (I *think*).

That way there is no gap between setting the file position and reading/writing. Some OS's (coughRISC OS) have this as the base api anyway.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
"How many Teela Browns does it take to change a lightbulb?" "Stupid question."






--
best,
Eliot


Reply | Threaded
Open this post in threaded view
|

Re: browsing method speed

timrowledge

On 21-01-2013, at 3:48 PM, Eliot Miranda <[hidden email]> wrote:
>
> Alas it bites at a slightly higher-level than that also.  Yes, the decoupling of positioning and reading is a problem for thread-safety.  But so is the single buffer and the single position.  e.g. if one were to call your unified primitive below to fill the buffer that wouldn't prevent another thread reading at a different position into the same buffer and trashing the contents from the POV of the first thread. Since the programming tools are essentially single-threaded it's not *that* bad a problem, unless you're debugging source access (I *think*).

Gotta start somewhere. Bottom is often good. Then other people can build upon that.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Ubi dubium ibi libertas


Reply | Threaded
Open this post in threaded view
|

Re: browsing method speed

Eliot Miranda-2



On Mon, Jan 21, 2013 at 3:51 PM, tim Rowledge <[hidden email]> wrote:

On 21-01-2013, at 3:48 PM, Eliot Miranda <[hidden email]> wrote:
>
> Alas it bites at a slightly higher-level than that also.  Yes, the decoupling of positioning and reading is a problem for thread-safety.  But so is the single buffer and the single position.  e.g. if one were to call your unified primitive below to fill the buffer that wouldn't prevent another thread reading at a different position into the same buffer and trashing the contents from the POV of the first thread. Since the programming tools are essentially single-threaded it's not *that* bad a problem, unless you're debugging source access (I *think*).

Gotta start somewhere. Bottom is often good. Then other people can build upon that.

Sure, but can't solve the immediate problem this way because it takes time for a VM change to percolate through. 
--
best,
Eliot


Reply | Threaded
Open this post in threaded view
|

Re: browsing method speed

timrowledge

On 21-01-2013, at 3:55 PM, Eliot Miranda <[hidden email]> wrote:
>
> Sure, but can't solve the immediate problem this way because it takes time for a VM change to percolate through.

I call that 'a forcing function'.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Strange OpCodes: IXM: Initiate X-rated error Messages



Reply | Threaded
Open this post in threaded view
|

Re: browsing method speed

vaidasd
In reply to this post by vaidasd
This is ESET NOD32 Antivirus 4.2.7 Protection configured to a maximum. Squeak 4.4 is no longer fun to use then antivirus is running, while Squeak 4.1, or, I believe other release that does not have CurrentReadOnlySourceFiles, is no problem.
Vaidas



Reply | Threaded
Open this post in threaded view
|

Re: browsing method speed

vaidasd
In reply to this post by Eliot Miranda-2
Eliot,
What is your opinion about this. Is this a problem good to solved? If
so, what is the process, shall information about issue be filled into
bugs.squeak.org?
Vaidas
2013/1/22 Eliot Miranda <[hidden email]>:

>
>
>
> On Mon, Jan 21, 2013 at 3:51 PM, tim Rowledge <[hidden email]> wrote:
>>
>>
>> On 21-01-2013, at 3:48 PM, Eliot Miranda <[hidden email]> wrote:
>> >
>> > Alas it bites at a slightly higher-level than that also.  Yes, the
>> > decoupling of positioning and reading is a problem for thread-safety.
>> > But
>> > so is the single buffer and the single position.  e.g. if one were to
>> > call
>> > your unified primitive below to fill the buffer that wouldn't prevent
>> > another thread reading at a different position into the same buffer and
>> > trashing the contents from the POV of the first thread. Since the
>> > programming tools are essentially single-threaded it's not *that* bad a
>> > problem, unless you're debugging source access (I *think*).
>>
>> Gotta start somewhere. Bottom is often good. Then other people can build
>> upon that.
>
>
> Sure, but can't solve the immediate problem this way because it takes time
> for a VM change to percolate through.
> --
> best,
> Eliot
>
>
>

Reply | Threaded
Open this post in threaded view
|

[bug 7733] Re: browsing method speed

vaidasd
http://bugs.squeak.org/view.php?id=7733

2013/1/30 Eliot Miranda <[hidden email]>:

>
> Personally I think it's important.  But I want to hear form others whether
> they find the hack I proposed acceptable or not.
>> > On Mon, Jan 21, 2013 at 3:51 PM, tim Rowledge <[hidden email]> wrote:
>> >>
>> >>
>> >> On 21-01-2013, at 3:48 PM, Eliot Miranda <[hidden email]>
>> >> wrote:
>> >> >
>> >> > Alas it bites at a slightly higher-level than that also.  Yes, the
>> >> > decoupling of positioning and reading is a problem for thread-safety.
>> >> > But
>> >> > so is the single buffer and the single position.  e.g. if one were to
>> >> > call
>> >> > your unified primitive below to fill the buffer that wouldn't prevent
>> >> > another thread reading at a different position into the same buffer
>> >> > and
>> >> > trashing the contents from the POV of the first thread. Since the
>> >> > programming tools are essentially single-threaded it's not *that* bad
>> >> > a
>> >> > problem, unless you're debugging source access (I *think*).
>> >>
>> >> Gotta start somewhere. Bottom is often good. Then other people can
>> >> build
>> >> upon that.
>> >
>> >
>> > Sure, but can't solve the immediate problem this way because it takes
>> > time
>> > for a VM change to percolate through.
>> > --
>> > best,
>> > Eliot
>> >
>> >
>> >
>
>
>
>
> --
> best,
> Eliot