Вопрос говорит все. Кто-нибудь знает, если следующее...
size_t div(size_t value) {
const size_t x = 64;
return value / x;
}
... оптимизирован на?
size_t div(size_t value) {
return value >> 6;
}
Составляют ли компиляторы? (Мой интерес к GCC). Существуют ли ситуации, когда это происходит, и другие, где это не так?
Мне бы очень хотелось знать, потому что каждый раз, когда я пишу деление, которое можно было бы оптимизировать таким образом, я трачу некоторую умственную энергию, размышляя о том, потрачено ли драгоценное ничто из секунды, занимаясь делением, где будет достаточно сдвига.