Michael Carlson wrote:
I've also found that marking a couple of parameters of that function const (that I believe should be marked const anyways), CPU usage in that function drops measurably with oprofile. As far as I know, parameters that aren't modified in a function should be marked const anyways, to send the right hint to the compiler. Since it actually turns out to be faster too, it seems worth it to me.
-static void convert_5x5_asis(int width, int height,
const void* srcbits, int srclinebytes,
void* dstbits, int dstlinebytes)
+static void convert_5x5_asis(const int width, const int height,
const void* srcbits, const int srclinebytes,
void* dstbits, const int dstlinebytes)
There is no need to make anything except the pointers const - I don't think I've ever seen that in real world code. In theory this would give the compiler slightly more information... but if the optimizer is unable to figure out that the parameter is never used as an lvalue by himself it sucks so badly that it probably won't do much better with that hints anyway. :-)
Constifying the pointers is fine ofcourse (but rather because it helps finding bugs than for those 1.5% performance improvements.
Felix