2011-02-24 4 views
6

나는 C 책을 읽고있다. 산술 표현식 섹션에서는 다음과 같이 말합니다 :분할 작업이 일반적으로 컴퓨터에서 더 많은 리소스를 사용하는 이유는 무엇입니까?

"나누기는 일반적으로 더 많은 리소스를 사용합니다. 나누기를 피하기 위해 나누기보다는 곱해서 예를 들어 2.0으로 나누는 대신 0.5를 곱합니다.

왜 부서에서는 일반적으로 더 많은 리소스를 사용합니까? 누구든지 내게 자세한 설명을 해줄 수 있니?

고마워요.

+1

다른 프로세서에있는 ALU가 어떻게 부서를 구현하는지 알아야합니다. –

+2

현재 C 컴파일러가 일반적으로 사용자를 위해 마이크로 최적화를 수행한다는 것을 명심하십시오. – nos

+0

@nos - 일반적으로 최적화가 설정된 경우에만 사용 가능합니다. 어떤 사람들은 DEBUG 모드에서이 물건을 측정하고 잘못된 생각을 갖습니다. – Josh

답변

6

이진 곱셈은 농민 알고리즘을 사용하여 간단합니다 - 당신은 기본적으로 다음 합계, 이동 : 그것은 뺄셈의 시퀀스 (긴 부서처럼 학교에서 수행했을 수)의 같은 http://en.wikipedia.org/wiki/Multiplication_algorithm#Peasant_or_binary_multiplication

진 부문이 훨씬 어렵습니다. 메인 알고리즘 클래스는 'radix'라고 불리우며 여기에서 예제를 볼 수 있습니다 : http://www.bearcave.com/software/divide.htm

먼저 측정하고 최적화하십시오. 이미 최적화 된 코드보다 문제 도메인과 일치하는 코드를 유지하는 것이 훨씬 쉽습니다.

관련 문제