[Glass] Profiling beyond ExecBlock >> valueWithPossibleArguments: ?

Mariano Martinez Peck via Glass glass at lists.gemtalksystems.com
Wed Feb 3 04:11:43 PST 2016


On Wed, Feb 3, 2016 at 9:08 AM, Mariano Martinez Peck <marianopeck at gmail.com
> wrote:

> Hi guys,
>
> In Quuve we have a huge "rule engine" in which user defined "rules" are
> evaluated over 10k companies or whatever in order to filter/screen the
> companies that meet certain conditions.  The rules are the very end have a
> Smalltalk closure that gets evaluated.
>
> I am trying to profile some things and what happens is that I can never
> see what happens inside the "ExecBlock >> valueWithPossibleArguments:". All
> the profiling stops at this method. For example, say the ProfMonitor tells
> me that "ExecBlock >> valueWithPossibleArguments:" took 50% of the time,
> then the tree stops there. I have NO CLUE what took the time inside the
> closure.
>
> I do get the difference between profiling closures (different instances)
> vs profiling methods. And I also know that #valueWithPossibleArguments:
> ends up in a primitive. But still, there may exist a workaround.
>
> Just to illustrate the issue, try profiling this:
>
>
> | profMon |
> profMon := ProfMonitorTree new.
> profMon interval: 10.
>  profMon startMonitoring.
>
> * [1000 timesRepeat: [Transcript show: 'hola']]
> valueWithPossibleArguments: #().*
>
> profMon
>         stopMonitoring;
>         gatherResults.
>
> (FileStream
>     forceNewFileNamed:
>       '/Users/mariano/gemstone'
>         , DateAndTime now printString faAsFilename)
>     nextPutAll: (profMon reportDownTo: 10);
>     cr
>
> You will see that in the resulting file there is NOTHING about the, for
> example, #show: of the Transcript. The Transcript itself does not appear at
> all. All you see are lines like:
>
> 27.4 5.0 executed code
> 100.0% (1) executed code [UndefinedObject]
>
>
> Thanks for any idea,
>
>
>

BTW, I forgot to say that in Pharo, IT DOES WORK in the sense I get
profiling of the closure (#show: , #nextPutAll: etc). Just try:

TimeProfiler spyOn: [
 [10000 timesRepeat: [Transcript show: 'hola']] valueWithPossibleArguments:
#().
]


-- 
Mariano
http://marianopeck.wordpress.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20160203/385bdd86/attachment-0001.html>


More information about the Glass mailing list