을 다시 사용하는 경우 나는 다음과 같은 코드를 가지고 :는 최적화를 컴파일러 및 예를 들어 변수
int main(){
myClass a(...);
a.doSomething();
if(...){
myClass c(...);
c.doSomething();
}
}
윌 GCC 또는 그 소리와 같은 일반적인 컴파일러은 "은"시 더 이상 사용되지 않습니다 찾는하여 이러한 변수의 사용을 최적화 평생 동안 "c"를위한 공간을 재 할당하는 대신에? 그 클래스에 대해 작동하지 않는 경우 double 또는 size_t 같은 "전통적인"형식으로 작동합니까?
자주 호출되는 함수의 할당 비용을 최소화하려고합니다. 그러나 함수 내부의 일부 오래된 변수는 이미 쓸모가 없지만 새로운 변수는 그 이름이라고해서는 안됩니다. 직접 나를 위해 변수를 재사용 컴파일러 것인가 아니면
myClass a(...);
something(a);
if(...){
#define c a
c=myClass(...);
something c;
#undef c
}
프로파일 러에서 이것이 응용 프로그램의 핫스팟임을 알리고 생성 된 어셈블리는 무엇을 말합니까? – GManNickG
어때 대략 :'{myClass a; a.doSomething(); } {if (...) {myClass c; c.doSomething(); }}' –
함수 본문에 짧은 범위가있는 경우에도 GCC는 스택 공간을 아주 잘 재사용하지 않았습니다. 그러나 나는 그것이 더 나아 졌다고 믿는다. –