Levente Uzonyi uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-ul.260.mcz ==================== Summary ==================== Name: System-ul.260 Author: ul Time: 24 February 2010, 12:10:09.99 am UUID: b3a36226-fa6a-e543-b255-d6fc3cb0f335 Ancestors: System-edc.259 - remove the remaining #close sends from MessageTally. =============== Diff against System-edc.259 =============== Item was changed: ----- Method: MessageTally class>>tallySendsTo:inBlock:showTree: (in category 'spying') ----- tallySendsTo: receiver inBlock: aBlock showTree: treeOption " MessageTally tallySends: [3.14159 printString] " "This method uses the simulator to count the number of calls on each method invoked in evaluating aBlock. If receiver is not nil, then only sends to that receiver are tallied. Results are presented as leaves, sorted by frequency, preceded, optionally, by the whole tree." | prev tallies startTime totalTime | startTime := Time millisecondClockValue. tallies := MessageTally new class: aBlock receiver class method: aBlock method. tallies reportOtherProcesses: true. "Do NOT filter nodes with nil process" prev := aBlock. thisContext sender runSimulated: aBlock contextAtEachStep: [ :current | current == prev ifFalse: [ "call or return" prev sender == nil ifFalse: [ "call only" (receiver == nil or: [ current receiver == receiver ]) ifTrue: [ tallies tally: current by: 1 ] ]. prev := current ] ]. totalTime := Time millisecondClockValue - startTime // 1000.0 roundTo: 0.01. (StringHolder new contents: (String streamContents: [:s | s nextPutAll: 'This simulation took ' , totalTime printString , ' seconds.'; cr. treeOption ifTrue: [ tallies fullPrintExactOn: s ] + ifFalse: [ tallies leavesPrintExactOn: s ] ])) - ifFalse: [ tallies leavesPrintExactOn: s ]. - tallies close ])) openLabel: 'Spy Results'! Item was changed: ----- Method: MessageTally class>>spyOn:toFileNamed:reportOtherProcesses: (in category 'spying') ----- spyOn: aBlock toFileNamed: fileName reportOtherProcesses: aBoolean "Spy on the evaluation of aBlock. Write the data collected on a file named fileName." + | value node | - | file value node | node := self new. node reportOtherProcesses: aBoolean. value := node spyEvery: self defaultPollPeriod on: aBlock. + FileStream newFileNamed: fileName do: [ :file | + node report: file ]. - file := FileStream newFileNamed: fileName. - node report: file; close. - file close. ^value! Item was changed: ----- Method: MessageTally class>>spyOnProcess:forMilliseconds:toFileNamed:reportOtherProcesses: (in category 'spying') ----- spyOnProcess: aProcess forMilliseconds: msecDuration toFileNamed: fileName reportOtherProcesses: aBoolean "Spy on the evaluation of aProcess. Write the data collected on a file named fileName. Will overwrite fileName" + + | node | - | file node | node := self new. node reportOtherProcesses: aBoolean. node spyEvery: self defaultPollPeriod onProcess: aProcess forMilliseconds: msecDuration. + FileStream fileNamed: fileName do: [ :file | + node report: file ]! - file := FileStream fileNamed: fileName. - node report: file; - close. - file close! |
Free forum by Nabble | Edit this page |