Является ли объединение более эффективным, чем переход на современные компиляторы?

Рассмотрим простой код:

UINT64 result;
UINT32 high, low;
...
result = ((UINT64)high << 32) | (UINT64)low;

Превращают ли современные компиляторы это в настоящий сдвиг ствола на высоком уровне или оптимизируют его до просто скопировать в нужное место?

Если нет, то использование объединения показалось бы более эффективным, чем сдвиг, который, похоже, использует большинство людей. Тем не менее, оптимизация компилятора - идеальное решение.

Мне интересно, как мне посоветовать людям, когда им действительно требуется эта дополнительная немного производительности.

6
задан timrau 20 August 2012 в 17:53
поделиться