C#은 배열의 오버런을 방지하기 위해 자동으로 for 문으로 배열을 순회할 때 자동으로 경계 조사를 한다.

문제는 배열의 크기를 확실하게 알고 배열 경계를 넘지 않도록 프로그래머 주의를 해도 컴파일러가 경계 조사 코드를 만들어 버려서 성능 측면에서 손해를 볼 수 있다.

 

배열의 경계 조사를 하지 않고 싶다면 for 문에서 조건 검사를 배열의 Length 멤버를 사용한다

 

static void Test_SimpleAscend(int[] a) {

           for (int i = 0; i < a.Length; i++)

                     a[i] = i;  // We get this.

}

 



좀 더 자세한 내용은 아래 링크를 참조

https://blogs.msdn.microsoft.com/clrcodegeneration/2009/08/13/array-bounds-check-elimination-in-the-clr/

 

저작자 표시
신고
by 흥배 2016.08.08 08:00
| 1 |

티스토리 툴바