2012-05-30 2 views
0

bool의 2 차원 배열이 단순한 게임의 맵을 나타내는 것으로 가정 해 봅시다. 배열의 모든 셀은 셀이 일부 게임 개체 (다른 경우 거짓)에 의해 점유 된 경우 true으로 설정할 수 있습니다.루프 내에서 int 변수에 값을 할당 (최적화)

개체의 동작과 관련하여 루프에서 맵을 업데이트하려고합니다. 어떤 이유 때문에지도의 일부 영역 만 업데이트 할 수 없다고 가정 해 봅시다. 객체가 위치를 변경하면 배열의 모든 셀을 반복하고 값을 무효화해야합니다.

우리는 모든 어레이의 업데이트에서 몇 가지 변경 사항이 있지만 어레이는 거대하다는 것을 알고 있습니다. 그리고 지금 질문이옵니다. 더 최적입니다.

(1) :

for (int i = 0; i < Rows; i++) 
    for (int j = 0; j < Cols; j++) 
    { 
     bool newValue = update(i,j); 
     arr[i,j] = arr[i,j] != newValue ? newValue : arr[i,j]; 
    } 

(2) :

for (int i = 0; i < Rows; i++) 
    for (int j = 0; j < Cols; j++) 
    { 
     bool newValue = update(i,j); 
     if(newValue != arr[i,j]) 
      arr[i,j] = newValue; 
    } 

(3) 아니면이 : (1)

for (int i = 0; i < Rows; i++) 
    for (int j = 0; j < Cols; j++) 
    { 
     arr[i,j] = update(i,j); 
    } 

내 생각이다

최악의 솔루션 이리. 그래서 (2) vs (3).

+0

2와 3의 차이가 너무 작아 차이가 중요하지 않으므로 가장 단순한 것 (3)으로 이동한다고 생각합니다. 그것은이 질문에 동의하는 것 같다 http://stackoverflow.com/questions/4586795/performance-assign-boolean-value-always-or-check-value-first – hatchet

답변

0

아니요 3. # 2에서와 같이 코드를 작성할 이유가 없습니다. 문제없이 if를 제거 할 수 있습니다.