[PD] CPU usage of GUI objects in subpatches
jancsika at yahoo.com
Tue Jul 16 02:16:02 CEST 2013
On 07/15/2013 05:40 PM, Miller Puckette wrote:
> I tried this with four versions of a subpatch, one with "nothing" (just an
> inlet connected through to an outlet), one with a "float", one with hslider, and
> one with a number box (not "number2", just control-3 number). Subtracting
> out the control case, I sent 1000000 random numbers through and asked the
> cputime object how much time elapsed, and got approximately:
> float hsl number
> closed 10 50 150
> open 10 50 150
> This was usin "until" to loop 1000000times. Trying the same thing with
> "metro 0.001" gives:
> closed <10 50 150
> open <10 60 200
> That wasn't at all what I was expecting to see!
> This was on a core 2 duo 7600 running at 1.6 GHz (my patch wasn't CPU hungry
> enough to make my CPU want to speed up), linux 3.6.3-1.fc17.x86_64 (Fedora)
Getting back to the OP, I just want to point out that there are two separate
issues at play here. I'll phrase them as a q&a:
Q: When inserting an iemgui for the patch author's convenience (or
inspecting the abstraction), does it make a difference whether you put
in the main flow of the patch vs. outside of that flow (as Frank suggests)?
A: The answer is usually yes, _regardless_ of the cpu usage of the GUI
object. It's always
better to have one less object in the main object chain. If you just
need to send
values down the chain, add an iemgui as an additional input to the
chain. If you want to see results of your patch in realtime, use the
which is available in both Pd-extended and Pd-l2ork.
There may be situations where you want to see a bunch of iemguis getting
at once, but that's more likely to be a UI than something inside an
Q: Are there times when it is useful to insert an iemgui into an object
inside an abstraction, aside from its usefulness as a GUI?
A: Yes-- see [tgl]. It takes the same [realtime] on my machine as
[f]---[== 0] when
the patch is not visible, plus you get visual feedback if you need it.
Of course if you
make the abstraction visible when you're sending a lot of data you'll
take a CPU usage
hit with [tgl] where you wouldn't for the non-GUI objects, but depending
on how you're
using it that may not be a factor.
> On Mon, Jul 15, 2013 at 05:18:00PM -0400, Jonathan Wilkes wrote:
>> On 07/15/2013 09:13 AM, Frank Barknecht wrote:
>>> I didn't test current Pd versions nor your fork, but up to 0.43 GUI
>>> objects in subpatches or abstractions were a substantial and significant
>>> CPU load when they are activated, even when invisible. So this is slow:
>>> [r data]
>>> [hsl ...]
>>> [s data-out]
>>> But this is fast:
>>> [r data]
>>> | [hsl ...]
>>> [s data-out]
>> Pd-l2ork version 20130528:
>> I put a [inlet]---[hsl]---[outlet] in a subpatch and compared to a
>> subpatch with [inlet]--[float]--[outlet].
>> Measuring sending a random float to each subpatch. Hsl subpatch was
>> between 0.005 and 0.006
>> and float subpatch was 0.004.
>> Measuring cpu usage with gnome-system-monitor with a [metro 1]
>> driving the hsl subpatch:
>> * when subpatch is un-vis'd and metro is off, cpu usage is around 15%
>> * when subpatch is un-vis'd and metro is on, cpu usage is between
>> 15-20% (using gnome-system-monitor so it's hard to discern the
>> difference on the graph)
>> * when subpatch is vis'd, cpu usage is around 60%
>> So when the patch is vis'd, substantial and significant CPU load.
>> When unvis'd, not so much.
>> Debian wheezy, AMD64, pd-l2ork
>>> Maybe this has changed now with the latest versions, so I would
>>> recommend to benchmark it again.
>> Pd-list at iem.at mailing list
>> UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
More information about the Pd-list