[PD] help! my patch breaks pd!

Krzysztof Czaja czaja at chopin.edu.pl
Wed Aug 22 14:49:40 CEST 2001


hi,

not really shure what you mean by _calling_ an abstraction.  Reusing
abstraction definition only (a .pd file), which is more like macro
expansion (let me talk in a procedural way), or reusing program
resources, as if calling a routine?  The later would mean passing
a message to the _same_ place in a patch.  But the same inlet or
receive as created in an abstraction definition is _not_ the same
place if used in two different instances of this abstraction.

The -verbose printout suggests all 2197 copies are created (either
dynamically with 'obj' message, or statically while reading objects
from a parent patchfile).  In Pd you always get a separate copy of
each abstraction instance, thus the full object creation is repeated
2197 times -- all steps, including loading from a file and allocating
memory.

Each copy of an empty abstraction takes a little over 600 bytes, and
600*13**3 == 1.3Mb.  Putting a simple object, like inlet or receive,
into a patch increases the per-instance amount by about 100 bytes
(connections take much less).  Assuming your abstraction has 8 i/o
objects and ~10 simple objects doing the real job, this abstraction
uses ~4 times the empty abstraction memory size.  But still 5Mb is
nothing nowadays, so the only possible reason I know of is memory
_fragmentation_.

Krzysztof

(ok, since I was only guessing, the above is not very helpful; perhaps
you could attach this small abstraction -- not the multi-thousand-line
main patch of course).

Greg Rippin wrote:
...
> Thanks Miller for the suggestions.  I tried loading the parent patch with an
> empty abstraction in place of the one that is called 2197 times (as mentioned,
> this repeatedly called abstraction is very small, but has two inlets, two
> outlets, and four receive objects) and the parent patch loaded fine.  I
> noticed while trying to load the original parent patch (with the repeated
> abstraction in place) with the -verbose flag, that the parent pd window
> scrolls as if it's loading many of the instances being called (trying and
> failing to find the .dll, finding the .pd) for about fifteen seconds before pd
> dies.
...



More information about the Pd-list mailing list