2011-08-19 3 views
0

어느 것이 더 빠르게 실행됩니까?C - 왼쪽 시프트 또는 직접 추가 (속도)

1 :

n = n << 1; 

2 :

n = n + n; 
+1

어떤 컴퓨터 에서요? 어떤 컴파일러로? 주변 코드는 무엇입니까? 대답은이 모든 것들과 그 이상에 달려 있습니다. 'n'의 유형과 값에 따라, 이것들은 어쨌든 똑같은 동작 일 필요는 없습니다. – detly

+2

"사전 최적화는 모든 악의 뿌리입니다." 그 중 가장 의미있는 것을 사용하십시오. – Stan

답변

4

원칙적으로 덜 엄격하게 정의 되었기 때문에 << 일 수 있습니다. n+n은 오버플로가 발생하지 않을 때마다 정의되지만 은 n이 음수가 아니고 결과가 오버 플로우하지 않는 경우에만 정의됩니다.

실제로 컴파일러는 둘 모두에 대해 동일한 동일한 기계 코드를 생성합니다.

6

어떤 좋은 컴파일러는 그들이 모두 같은 만드는 끝날 것입니다, 그래서 그것을 중요한 상상할 수 없다.

관련 문제