CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): flexable (플__)
날 짜 (Date): 2002년 9월 29일 일요일 오전 11시 47분 25초
제 목(Title): Re: C 언어에서...?


앞 답글에 지적된대로 더하기가 아니라 곱하기를 쉬프트로 바꿀 수 있는데요..
이 테크닉은 strength reduction이라고 아주 고전적인 컴파일러 옵티미제이션
중의 하나입니다. gcc (성능 면에서는 상당히 허접한 컴파일러입니다)에서
이 옵티미제이션이 기본으로 켜져 있는지는 모르겠군요.

모던 CPU에서도 곱하기는 몇 사이클 걸리기 때문에 쉬프트로 변환하는 게
일반적으로는 성능에 도움을 줍니다. 재미있는 건 펜티엄 4의 경우 소위
더블 펌프된 ALU가 전체 파이프라인의 두 배 속도로 도는 데 비해 쉬프트의
경우 더하기(0.5 싸이클)의 무려 4 배나 걸린다는 거지요. 이렇게 상대적으로
느린 쉬프트 덕에 strength reduction 효과가 예전 같지는 않다고 합니다. P4에서.

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.