KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
pure is a function attribute which says that a function does not modify any global memory. const is a function attribute which says that a function does not read/modify any global memory. Given that information, the compiler can do some additional optimisations. Example for GCC: float sigmoid(float x) __attribute__ ((const)); float calculate(float x, unsigned int C) { float sum = 0; for(unsigned int i = 0; i < C; ++i) sum += sigmoid(x); return sum; } float sigmoid(float x) { return 1.0f / (1.0f - exp(-x)); } In that example, the compiler could optimise the function calculate to: float calculate(float x, unsigned int C) { float sum = 0; float temp = C ? sigmoid(x) : 0.0f; for(unsigned int i = 0; i < C; ++i) sum += temp; return sum; } Or if your compiler is clever enough (and not so strict about floats): float calculate(float x, unsigned int C) { return C ? sigmoid(x) * C : 0.0f; } How can I mark a function in such way for the different compilers, i.e. GCC, Clang, ICC, MSVC or others?
Tags (comma-separated)
Save Edits
Cancel