[PD] C++ for reusable dsp lib - or better use C?

Mathieu Bouchard matju at artengine.ca
Sat Mar 3 18:34:06 CET 2012


Le 2012-03-02 à 13:32:00, katja a écrit :

> How about function call overhead? For constructor and destructor no 
> problem of course, but accessor wrappers will be called often, in fact 
> it doubles the number of function calls for external access.

Constant calls are possibly a lot quicker than variable calls. Pd does 
call by function pointer, which needs to be figured out before the CPU 
pipeline can start reading and parsing the machine-code for it. When it's 
just a function-pointer in a known variable, it's not very slow, and might 
be very fast (?), but it takes a lot more time if there are conditional 
statements necessary to figure out which function-pointer should be used. 
This should tell you a lot about Pd's message-passing if you read that 
part of Pd.

A wrapper that is specific to each method is very fast, because the 
pointer is already known.

GridFlow uses two levels of wrappers, one of which is supposed to be slow 
according to what I say above (because the outer wrapper does its own 
message dispatch) ; but keeping things in perspective, it's still faster 
than anything else in Pd, when it comes to doing things that no other Pd 
class provides.

GEM's wrappers have virtually no runtime overhead, except that wrapper has 
to be written. GridFlow's method-wrappers are auto-generated, so that you 
don't have to write them. Those are two big examples of wrapping a C++ 
library in C so that it can be used in Pd.

  ______________________________________________________________________
| Mathieu BOUCHARD ----- téléphone : +1.514.383.3801 ----- Montréal, QC


More information about the Pd-list mailing list