[PD] optimizing big patches

Mathieu Bouchard matju at artengine.ca
Mon Jan 10 02:40:18 CET 2011


On Sun, 9 Jan 2011, Pedro Lopes wrote:

> i Guess the question could go a bit further, how can we devise a 
> profiling system for a dataflow programming environment?

I made two or three of those... GridFlow had several incarnations of such 
a thing but it only worked for GridFlow's own objects.

Then I made one for the whole of Pd, and it's somewhere in the DesireData 
branch, but it caused occasional crashes for mysterious reasons, and 
no-one else looked at the code.

Here's a screenshot of the latter :

   http://artengine.ca/desiredata/gallery/simple-benchmark.png

You see that [cos] is over twice slower than [*] but [t f f] minus those 
two is also a lot, but that's the cost of message-passing, because [t f f] 
doesn't do any processing. And so on... the top number is the total time 
for the first message to "return" (every message-passing down a wire is 
accompanied later by an opposite movement once the job is done... that's 
"the stack").

GridFlow's profiler instead had a menu in Pd's main window which had a 
"reset" and a "dump" and the latter would print non-cumulative 
measurements (i.e. it doesn't include time in objects sent to) in the 
console (or in the terminal back when there wasn't a console) sorted by 
decreasing importance.

Ideally we would have both cumulative and non-cumulative figures, because 
neither is nearly as useful as both together.

  _______________________________________________________________________
| Mathieu Bouchard ---- tél: +1.514.383.3801 ---- Villeray, Montréal, QC


More information about the Pd-list mailing list