| [ 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에서. |