MATLAB: What are some tips for writing efficient C/C++ code for S-Functions

c/c++s-functionssimulinkspeeding up

Can anyone give advices on what I should consider, if I want to write an efficient code in C/C++ for S-Functions?
For example, I am wondering if it is better to read values from Look-Up tables in Simulink, instead of calculating it in the C/C++ code and especially using (standard C) trigonometric functions?
Should I generally avoid standard C math-functions (e.g. a*a instead of pow(a, 2.0))?
Any other points that might be crucial to optimize C/C++ codes?
I think it would be useful to know of such points, if there are any.
Looking forward to any hints.

Best Answer

Regarding Lookup Tables vs. S-Functions, it really depends on your application. Lookup Tables may be faster than (complex) computations, but may increase ROM usage in generated code (assuming you use Simulink Coder to generate embedded C/C++ code from your model). So you need to make a trade-off.
As for more general C/C++ optimizations, I second Jan's suggestion for a C/C++ forum. An S-function is in essence a shared library, so all generic C/C++ language rules apply.