2012-09-17 2 views
0

변수를 선언하자마자 변수를 조작하기 시작합니다. 문제가된다면 제 질문은 조작 속도에 달려 있습니다.
배열의 모든 값의 합계 인 변수 total이 있다고 가정 해 보겠습니다. 평균을 찾으려면 total/length을 수행하십시오. 새로운 값 (즉, double avg = total/length)을 선언하는 것이 더 빠르지 않습니까? 아니면 모든 것을 "제자리에서"수행하는 것이 더 빠릅니까 (total \= length), 이것은 평균적으로 total이 가난한 변수 이름이라는 사실을 무시함으로써 당연히 마 단순히 내 요점을 파악하는 것입니다장소 데이터 조작

나는 프로세서가 ALU에서 계산을 수행하거나 CPU에서 비트 시프 팅을 통해 하드 와이어 된 계산을 수행하기 위해 데이터를 복사해야한다고 생각하지만 실제로 C++가 처리하는 방법을 잘 모르겠습니다. 기억, 그리고 내가 궁금해하는 방법에 관해서는 백 엔드에서 작동합니다.

답변

2

얼마나 자주 평균을 사용할 것인가에 달려 있습니다. 몇 번만 사용하면 무시할 만하지만, 평균을 수백 또는 수천 번 사용해야하는 경우 일 수 있습니다.은 변수를 사용하는 데 "빠릅니다"라고 계산을 수행 할 필요가 없기 때문에 변수를 사용하는 것이 더 빠릅니다. 시각. 그러나 오늘날 컴파일러는 최적화와 관련하여 매우 훌륭하므로 실제로는 중요하지 않습니다.

프로파일을 테스트하고 프로파일 링 및 측정을 수행하면됩니다. 당신이해야 할 일 항상은 수동 최적화에 대해 생각하기 전에 수행해야합니다 (평균 계산이나 더 복잡한 작업은 병목 현상이 될 수 있습니다.)

1

최적화를 실행하면 컴파일러의 기능에 따라 다릅니다. 이 중요한 곳

2

당신이 total /= length 의미 가정 할 때, 당신은 단지 차이를 볼 수 있습니다 (즉, 당신은 실제로 모두 totalavg,이 경우 어쨌든 두 번째 버전을 사용할 수없는 사용해야 할 경우).

total이 더 이상 의미 상 정확하지 않기 때문에 나는 total /= length을 사용하고 있습니다.