El mar, 19-01-2010 a las 22:03 -0300, Alexandre Bergel escribió: > Dear List, > > Over the last few months I put some effort on a new profiler for > Pharo. It has been used on a number of projects. Time has come to > share it with you. > To install it, just doit the following expression in a workspace > (Mondrian will also be installed): > -=-=-=-=-=-=-=-=-=-=-=-= > Gofer new > squeaksource: 'MetacelloRepository'; > package: 'ConfigurationOfSpy'; > load. > (Smalltalk at: #ConfigurationOfSpy) perform: #loadDefault > -=-=-=-=-=-=-=-=-=-=-=-=
I tried it in a PharoCore 1.0 10506 and I get a lot of deprecation warnings for gofer addPackage:, addVersion: The method Gofer addVersion: has been deprecated. Instead of #addVersion: simply use #version: Select Proceed to continue, or close this window to cancel the operation. I pressed proceed and then I got: MetacelloGoferPackage(Object)>>doesNotUnderstand: #setName. Is this for 1.0, what version? Cheers > > To invoke the profiler, use the following template: > ProfilingPackageSpy viewProfiling: [ "YOUR CODE" ] inPackage: > 'YourPackageName' > ProfilingPackageSpy viewProfiling: [ "YOUR CODE" ] > inPackagesMatching: 'PackageName*' > > Replace "YOUR CODE" by an expression. Some examples are provided in > the class ProfilingPackageSpy (method category 'example'). You can > find profilings of Mondrian, Glamour, Moose/CAnalyzer, O2. > The profiling of Mondrian looks like this: > -=-=-=-=-=-=-=-=-=-=-=-= > ProfilingPackageSpy > viewProfiling: [ > | view | > view := MOViewRenderer new. > view nodes: (1 to: 100) forEach: [:each | view nodes: > (1 to: 100)]. > view root applyLayout > ] > inPackage: 'Mondrian' > -=-=-=-=-=-=-=-=-=-=-=-= > > There are two things you should keep in mind: > - "YOUR CODE" will be executed twice. The first time with message > Tally, then the second time with the full instrumentation. The second > execution should not be impacted by the first execution. > - You cannot instrument the whole image. I need more time to make this > happens. Therefore, you cannot provide '*' to inPackagesMatching: > > How to read the picture: > - big rectangle are classes > - edges represent class inheritance > - inner rectangles are methods: > * height = total time that the method has been executed > * width = number of time the method has been executed > * color = number of different receiver: white = the method has > been executed on 1 receiver. black = many receivers > > You can do a right-click on a method, and select viewInvocation. This > opens a second view that show the execution flow. A different mapping > of metrics is used: > - rectangle = methods > - edges = invocation (upper invokes below) > - gray color = method that always return 'self'. It corresponds to > void methods in Java or C++. It is therefore likely that the method > performs a side effect > - yellow color = method that always returns the same value for a > particular object > - width and height are as in the first visualization > > Keep in mind that you mind encounter a freeze of your image if you > instrument sensitive methods. > > I would be sincerely delighted to have experience report on this. > > Regards, > Alexandre > > -- Miguel Cobá http://miguel.leugim.com.mx _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
