C - сдвиг влево или добавление к себе (скорость)

Что выполняется быстрее?

1

n = n << 1;

2:

n = n + n;

Ответ 1

В принципе, << может быть быстрее для подписанных типов, потому что он менее строго определен. n+n определяется, когда он не переполняется, но n<<1 определяется только тогда, когда n неотрицателен и результат не переполняется.

В действительности, компилятор будет генерировать тот же самый машинный код для обоих.

Ответ 2

Любой хороший компилятор в конечном итоге сделает их одинаковыми, поэтому я не могу себе представить, что это важно.