Le 2012-03-03 à 10:32:00, katja a écrit :
I fail to see how those C wrappers could be inlined. Wouldn't that undo their raison d'être (replacing a C++ call with a C call)? But indeed function call overhead is small when compared to number-crunching, if these calls are done per block and not per sample.
If a function is only called from a single location and the function is hidden, then the original function may disappear and become embedded into the wrapper. I don't see GEM hiding its classes in such a manner. What might happen instead, is that a lot of code gets duplicated into the wrapper. This makes the executable bigger, but you still get the extra speed from inlining that way (for small functions).
The « omit frame pointer » optimisation may cut a lot of the overhead while reducing code size, for function calls that are not inlined.
| Mathieu BOUCHARD ----- téléphone : +1.514.383.3801 ----- Montréal, QC