KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
At the bottom of Demystifying the Restrict Keyword is this curious advice: Due to the order in which scheduling is done in GCC, it is always better to simplify expressions. Do not mix memory access with calculations. The code can be re-written as follows: then there is an example which is essentially transforming this velocity_x[i] += acceleration_x[i] * time_step; into this const float ax = acceleration_x[i]; // Then the same follows for y, z const float vx = velocity_x[i]; // etc for y, z const float nvx = vx + ( ax * time_step ); // etc velocity_x[i] = nvx; // ... Really? I would have thought this sort of transformation was trivial compared to other stuff optimising compilers have to do, such as lambda arguments to std::foreach and so on. Is this just stale, silly advice? Or is there a good reason why GCC can't or won't do this? (It makes me worry about writing the above as velocity += acceleration * time_step using my Vector3f class!
Tags (comma-separated)
Save Edits
Cancel