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