이 질문은 순전히 호기심에서 벗어 났으며 대답은 컴파일러에 달려 있다고 확신합니다. 이것은 또한 유지 보수가 불가능한 코드로 이어질 극 미세 최적화입니다. CPU는 분명히 각 계산을 수행하고 그것을 어딘가에 저장해야하기 때문에 기능적으로 동일 할 수도 있습니다.단일 행 문이 더 빠릅니까?
더 적은 변수를 사용하면 본질적으로 빠른 실행 코드로 이어질 지 궁금합니다. 예를 들어, 긴 계산을 위해 레지스터에 결과를 남겨 두는 것이 좋습니다. 물론 두 번 이상 같은 결과가 필요하다면 도움이되지 않습니다. 예를 들어
이 코드 : 이런 식으로 뭔가의 컴파일러 출력, 아니 변수로 한 줄, 항상 동일한 것 일반적으로
var final = GetFinal((GetNumber() + 10)/2);
:
var result = GetNumber();
var adjusted1 = result + 10;
var adjusted2 = adjusted1/2;
var final = GetFinal(adjusted2);
은 다음으로 변환 할 수 있습니다 언어별로? 위의 문장이 100의 계산을 포함한다면 그것은 동일 할 것입니까?
[어셈블리 코드 확인] (http://stackoverflow.com/a/137074/2721883) 모두에 대해 방출 될 수 있습니다. – clcto
사실입니다. 그러나 일반적인 경우에 더 궁금합니다. – Telavian
답변이 없습니다. 예를 들어 순수한 함수와 게으른 eval을 가진 언어에서,'GetFinal'의 한 줄짜리 인수는 사용되지 않으면 평가되지 않을 수도 있습니다. 반면에 4 행 버전은 평가됩니다. 컴파일을 고려하기 전에 (또는 +가 산술 플러스를 의미하지는 않는 언어). 그런 다음 컴파일 할 때 모든 컴파일러는 적합하고 최적화가 시행되지 않는 한 자유롭게 구현할 수 있습니다. 일반적으로 매크로 최적화를 수행하고 마이크로 최적화를 컴파일러에 맡기고 의심이가는 경우 가독성에 중점을 둡니다. –