Monticello Profiling

Philippe Marschall philippe.marschall at gmail.com
Sat Jul 1 12:50:00 UTC 2006


Hi

Loading of Monticello packages in the current 3.9 is already much
faster thanks to Adrian. But I think it's still far from optimal. So I
did a trace of loading several packages with Monticello (attached).

The parts I find interesting

29.0% {75168ms} PackageInfo>>includesClass:
28.0% {72576ms} RBParser class(Class)>>category

11.7% {30326ms} Delay>>wait (sent by EventSensor>>wait2ms)

More the 10% of the time is spent doing nothing. Although Class >>
#category has seen a major speedup (thanks Adrian) it's still a
bottleneck.

Cheers
Philippe
-------------- next part --------------
 - 243061 tallies, 259199 msec.

**Tree**
96.3% {249609ms} JLoader>>loadPackages
  |96.3% {249609ms} JLoader>>loadLatestPackage:from:
  |  88.4% {229132ms} MCVersion>>load
  |    |88.4% {229132ms} MCVersionLoader class>>loadVersion:
  |    |  88.4% {229132ms} MCVersionLoader>>load
  |    |    83.7% {216950ms} MCPackageLoader>>loadWithNameLike:
  |    |      |79.6% {206322ms} MCPackageLoader>>basicLoad
  |    |      |  |71.7% {185846ms} MCPackageLoader>>tryToLoad:
  |    |      |  |  |71.1% {184290ms} MCMethodDefinition(MCDefinition)>>loadOver:
  |    |      |  |  |  57.7% {149558ms} MCMethodDefinition>>load
  |    |      |  |  |    |57.1% {148003ms} CompiledMethod class(ClassDescription)>>compile:classified:withStamp:notifying:
  |    |      |  |  |    |  57.1% {148003ms} CompiledMethod class(ClassDescription)>>compile:classified:wi...notifying:logSource:
  |    |      |  |  |    |    37.1% {96163ms} CompiledMethod class(ClassDescription)>>addAndClassifySelecto...nProtocol:notifying:
  |    |      |  |  |    |      |34.2% {88646ms} SystemChangeNotifier>>methodAdded:selecto...l:class:requestor:
  |    |      |  |  |    |      |  34.0% {88128ms} SystemChangeNotifier>>trigger:
  |    |      |  |  |    |      |    34.0% {88128ms} AddedEvent(AbstractEvent)>>trigger:
  |    |      |  |  |    |      |      34.0% {88128ms} SystemEventManager(Object)>>triggerEvent:with:
  |    |      |  |  |    |      |        34.0% {88128ms} SystemEventManager(Object)>>triggerEvent:withArguments:
  |    |      |  |  |    |      |          33.7% {87350ms} WeakActionSequenceTrappingErrors>>valueWithArguments:
  |    |      |  |  |    |      |            33.7% {87350ms} WeakActionSequenceTrappingErrors>>valueWithArgum...startingFrom:
  |    |      |  |  |    |      |              33.1% {85795ms} WeakMessageSend>>valueWithArguments:
  |    |      |  |  |    |      |                30.4% {78796ms} MCWorkingCopy class(MCPackageManager class)>>methodModified:
  |    |      |  |  |    |      |                  30.3% {78537ms} MCWorkingCopy class(MCPackageManager class)>>managersForClass:selector:do:
  |    |      |  |  |    |      |                    30.2% {78278ms} MCWorkingCopy class(MCPackageManager class)>>managersForClass:category:do:
  |    |      |  |  |    |      |                      30.2% {78278ms} MCWorkingCopy class(MCPackageManager class)>>managersForClass:do:
  |    |      |  |  |    |      |                        29.0% {75168ms} PackageInfo>>includesClass:
  |    |      |  |  |    |      |                          28.0% {72576ms} RBParser class(Class)>>category
  |    |      |  |  |    |      |                            26.8% {69465ms} SystemOrganizer(Categorizer)>>listAtCategoryNamed:
  |    |      |  |  |    |      |                              26.5% {68688ms} Array(SequenceableCollection)>>indexOf:ifAbsent:
  |    |      |  |  |    |      |                                26.4% {68429ms} Array(SequenceableCollection)>>indexOf:startingAt:ifAbsent:
  |    |      |  |  |    |      |                                  13.2% {34214ms} primitives
  |    |      |  |  |    |      |                                  13.2% {34214ms} ByteSymbol(Symbol)>>=
  |    |      |  |  |    |    10.9% {28253ms} CompiledMethod class(ClassDescription)>>logMethodSource:forMe...withStamp:notifying:
  |    |      |  |  |    |      |10.8% {27993ms} CompiledMethod>>putSource:fromParseNod...p:inFile:priorMethod:
  |    |      |  |  |    |      |  8.3% {21514ms} CompiledMethod>>putSource:fromParseNode:inFile:withPreamble:
  |    |      |  |  |    |      |    |7.6% {19699ms} RemoteString class>>newString:onFileNumber:toFile:
  |    |      |  |  |    |      |    |  7.6% {19699ms} RemoteString>>string:onFileNumber:toFile:
  |    |      |  |  |    |      |    |    7.6% {19699ms} MultiByteFileStream(WriteStream)>>nextChunkPutWithStyle:
  |    |      |  |  |    |      |    |      7.6% {19699ms} MultiByteFileStream(WriteStream)>>nextChunkPut:
  |    |      |  |  |    |      |    |        7.6% {19699ms} MultiByteFileStream>>nextPutAll:
  |    |      |  |  |    |      |    |          6.8% {17626ms} MultiByteFileStream>>nextPut:
  |    |      |  |  |    |      |    |            3.9% {10109ms} UTF8TextConverter>>nextPut:toStream:
  |    |      |  |  |    |      |  2.5% {6480ms} CompiledMethod class(ClassDescription)>>printCategoryChunk:on:withStamp:priorMethod:
  |    |      |  |  |    |    9.1% {23587ms} CompiledMethod class(Behavior)>>compile:classified:notifying:trailer:ifFail:
  |    |      |  |  |    |      6.6% {17107ms} Compiler>>compile:in:classified:notifying:ifFail:
  |    |      |  |  |    |        6.6% {17107ms} Compiler>>translate:noPattern:ifFail:
  |    |      |  |  |    |          6.6% {17107ms} Parser>>parse:class:category:noPat...context:notifying:ifFail:
  |    |      |  |  |    |            6.6% {17107ms} Parser>>parse:class:noPattern:context:notifying:ifFail:
  |    |      |  |  |    |              5.2% {13478ms} Parser>>method:context:encoder:
  |    |      |  |  |    |                4.6% {11923ms} Parser>>statements:innerBlock:
  |    |      |  |  |    |                  4.4% {11405ms} Parser>>expression
  |    |      |  |  |    |                    2.8% {7258ms} Parser>>messagePart:repeat:
  |    |      |  |  |  13.3% {34473ms} MCClassDefinition>>load
  |    |      |  |  |    12.4% {32141ms} MCClassDefinition>>createClass
  |    |      |  |  |      11.3% {29289ms} ClassBuilder>>name:inEnvironment:subc...Dictionaries:category:
  |    |      |  |  |        11.3% {29289ms} ClassBuilder>>name:inEnvironment:subc...aries:category:unsafe:
  |    |      |  |  |          7.9% {20477ms} ClassBuilder>>recompile:from:to:mutate:
  |    |      |  |  |            |7.7% {19958ms} ClassBuilder>>informUserDuring:
  |    |      |  |  |            |  7.7% {19958ms} Utilities class>>informUserDuring:
  |    |      |  |  |            |    7.7% {19958ms} MVCMenuMorph>>informUserAt:during:
  |    |      |  |  |            |      7.6% {19699ms} EventSensor(InputSensor)>>cursorPoint
  |    |      |  |  |            |        7.6% {19699ms} EventSensor(InputSensor)>>mousePoint
  |    |      |  |  |            |          7.6% {19699ms} EventSensor>>primMousePt
  |    |      |  |  |            |            7.6% {19699ms} EventSensor>>wait2ms
  |    |      |  |  |            |              7.6% {19699ms} Delay>>wait
  |    |      |  |  |          2.5% {6480ms} SystemChangeNotifier>>classAdded:inCategory:
  |    |      |  |  |            2.5% {6480ms} SystemChangeNotifier>>trigger:
  |    |      |  |  |              2.5% {6480ms} AddedEvent(AbstractEvent)>>trigger:
  |    |      |  |  |                2.5% {6480ms} SystemEventManager(Object)>>triggerEvent:with:
  |    |      |  |  |                  2.5% {6480ms} SystemEventManager(Object)>>triggerEvent:withArguments:
  |    |      |  |  |                    2.5% {6480ms} WeakActionSequenceTrappingErrors>>valueWithArguments:
  |    |      |  |  |                      2.5% {6480ms} WeakActionSequenceTrappingErrors>>valueWithArgum...startingFrom:
  |    |      |  |  |                        2.5% {6480ms} WeakMessageSend>>valueWithArguments:
  |    |      |  |  |                          2.4% {6221ms} MCWorkingCopy class(MCPackageManager class)>>classModified:
  |    |      |  |  |                            2.4% {6221ms} MCWorkingCopy class(MCPackageManager class)>>managersForClass:do:
  |    |      |  |  |                              2.3% {5962ms} PackageInfo>>includesClass:
  |    |      |  |  |                                2.3% {5962ms} RBParser class(Class)>>category
  |    |      |  |4.0% {10368ms} OrderedCollection(SequenceableCollection)>>do:displayingProgress:
  |    |      |  |  |4.0% {10368ms} EventSensor(InputSensor)>>cursorPoint
  |    |      |  |  |  4.0% {10368ms} EventSensor(InputSensor)>>mousePoint
  |    |      |  |  |    4.0% {10368ms} EventSensor>>primMousePt
  |    |      |  |  |      4.0% {10368ms} EventSensor>>wait2ms
  |    |      |  |  |        4.0% {10368ms} Delay>>wait
  |    |      |  |3.2% {8294ms} MCOrganizationDefinition>>postloadOver:
  |    |      |  |  3.2% {8294ms} SystemOrganizer(Categorizer)>>categories:
  |    |      |  |    3.1% {8035ms} Array(SequenceableCollection)>>includes:
  |    |      |  |      3.1% {8035ms} Array(SequenceableCollection)>>indexOf:
  |    |      |  |        3.1% {8035ms} Array(SequenceableCollection)>>indexOf:ifAbsent:
  |    |      |  |          3.1% {8035ms} Array(SequenceableCollection)>>indexOf:startingAt:ifAbsent:
  |    |      |4.0% {10368ms} MCPackageLoader>>analyze
  |    |      |  4.0% {10368ms} MCPackageLoader>>sorterForItems:
  |    |      |    2.2% {5702ms} MCDependencySorter class>>items:
  |    |      |      2.2% {5702ms} MCDependencySorter>>addAll:
  |    |    4.3% {11146ms} MCPackageLoader>>updatePackage:withSnapshot:
  |    |      4.0% {10368ms} MCPackage>>snapshot
  |    |        2.7% {6998ms} MethodReference>>asMethodDefinition
  |    |          2.7% {6998ms} MCMethodDefinition class>>forMethodReference:
  |  4.8% {12442ms} MCMczReader(MCVersionReader)>>version
  |    |4.8% {12442ms} MCMczReader(MCVersionReader)>>basicVersion
  |    |  4.1% {10627ms} MCMczReader(MCVersionReader)>>snapshot
  |    |    4.1% {10627ms} MCMczReader(MCVersionReader)>>definitions
  |    |      4.1% {10627ms} MCMczReader>>loadDefinitions
  |    |        2.1% {5443ms} DataStream>>next
  |    |          2.1% {5443ms} DataStream>>readInstance
  |    |            2.1% {5443ms} MCSnapshot(Object)>>readDataFrom:size:
  |    |              2.1% {5443ms} DataStream>>next
  |    |                2.1% {5443ms} DataStream>>readInstance
  |    |                  2.1% {5443ms} OrderedCollection(Object)>>readDataFrom:size:
  |    |                    2.1% {5443ms} DataStream>>next
  |    |                      2.1% {5443ms} DataStream>>readArray
  |    |                        2.1% {5443ms} DataStream>>next
  |    |                          2.1% {5443ms} DataStream>>readInstance
  |  3.1% {8035ms} MCHttpRepository>>versionReaderForFileNamed:
  |    3.1% {8035ms} MCHttpRepository(MCFileBasedRepository)>>versionReaderForFileNamed:do:
  |      3.1% {8035ms} MCHttpRepository>>readStreamForFileNamed:do:
  |        3.1% {8035ms} HTTPSocket class>>httpGet:args:user:passwd:
  |          3.1% {8035ms} HTTPSocket class>>httpGet:args:accept:request:
  |            3.1% {8035ms} HTTPSocket class>>httpGetDocument:args:accept:request:
2.6% {6739ms} SystemProgressMorph>>label:min:max:
  2.5% {6480ms} PasteUpMorph>>displayWorld
    2.5% {6480ms} PasteUpMorph>>privateOuterDisplayWorld
      2.5% {6480ms} WorldState>>displayWorld:submorphs:
        2.5% {6480ms} WorldState>>drawWorld:submorphs:invalidAreasOn:
          2.3% {5962ms} FormCanvas(Canvas)>>fullDrawMorph:
            2.3% {5962ms} FormCanvas(Canvas)>>fullDraw:
              2.3% {5962ms} SystemWindow(Morph)>>fullDrawOn:

**Leaves**
17.8% {46137ms} Array(SequenceableCollection)>>indexOf:startingAt:ifAbsent:
17.6% {45619ms} ByteSymbol(Symbol)>>=
11.7% {30326ms} Delay>>wait
3.7% {9590ms} Semaphore>>waitTimeoutMSecs:
3.4% {8813ms} String class>>stringHash:initialHash:

**Memory**
	old			+7,310,188 bytes
	young		-3,004,508 bytes
	used		+4,305,680 bytes
	free		+2,914,712 bytes

**GCs**
	full			28 totalling 15,294ms (6.0% uptime), avg 546.0ms
	incr		10826 totalling 23,621ms (9.0% uptime), avg 2.0ms
	tenures		119 (avg 90 GCs/tenure)
	root table	0 overflows


More information about the Squeak-dev mailing list