JunMessageSpy observes message passings in an evaluation of a given block closure or a string, and displays a tree of contexts showing which method/block took how long in the execution. Observation sampling rate and cut-off threshold can be specified, e.g. JunMessageSpy spy: [Smalltalk keys collect: [ :className | (className asString select: [ :char | char isUppercase]) asSymbol]] often: 1 omit: 0.01. or JunMessageSpy evaluate: 'self keys collect: [ :className | (className asString select: [ :char | char isUppercase]) asSymbol]' for: Smalltalk often: 1 omit: 0.01.
'spy it' is also added to YellowButtonMenu on ParagraphEditor for convinience.