[Glass] Profiling beyond ExecBlock >> valueWithPossibleArguments: ?

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

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:


        , DateAndTime now printString faAsFilename)
    nextPutAll: (profMon reportDownTo: 10);

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,

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20160203/0c765408/attachment.html>

More information about the Glass mailing list