중첩 루프에서 한 번만 수행 할 수있는 가장 현명한 방법은 무엇입니까? 외부 루프가 매우 복잡하기 때문에 불변 부분을 추출 할 수 없습니다. 이 방법은 매우 자주 tree.cycle이 증가 될 때까지라고중첩 루프/루프 불변 형에서 한 번만 확인하십시오.
void foo::bar() {
if(oldCycle == tree.cycle) {
doSomething();
oldCycle++;
}
}
: 은 여기 내 C++ 예입니다. oldCycle는 foo는
claas foo {
public: ...
private:
int oldCycle;
};
의 개인 멤버 변수가이 코드를 컴파일러 최적화를 않거나 것이다 체크 실행하면 모든 반복인가?
편집 : 루프와 함께 코드를 요청한 것처럼 : 첫 번째 루프가 mexFunction() 메소드에 있고, 알고리즘이 matlab에서 시작되고 mexFunction을 호출합니다.
void mexFunction(...) {
for(tree.cycle = 0; tree.cycle<maxIt; tree.cycle++) {
foo->startfoo();
}
}
여기에 다른 루프입니다 : 당신이 컬렉션에 어떤 식 으로든에서 특별한 경우를 제거해야하기 때문에 일반적인 조건에 대한
void foo::startfoo() {
for(tree.cur_it = 0; tree.cur_it <=39; tree.cur_it++) {
bar();
}
}
무엇을 의미합니까? 정상적인 루프에서 모든 것은 반복마다 한 번만 발생합니다. 어느 예제도 * 단일 루프를 표시하지 않습니다. 당신이 요구하는 것을 보여주십시오. – jalf
'tree.cycle'이 때때로 바뀌기 때문에 최적화를 할 수있는 방법이 없습니다. 이 변경이 발생했을 때 플래그를 설정하면 플래그를 확인해야하므로 아무 것도 얻지 못합니다. – Gorpik