Programming/Language

MFC : CArray 성능 문제

appHunter 2010. 6. 24. 19:55
CArray 사용 시
 Add 로 인해 시간이 많이 걸린다.
 정확한 Size 를 알 때는
 SetSize -> SetAt 으로 추가 하면 성능이 좋아진다.
 정확한 Size를 모를때는
 크게 잡아주고
 SetAt 을 사용한다.

 거의 100배 정도 빨라지는 듯 -0-;



CArray
   CArray는 일반 배열과는 달리 융통성을 제공하지만 프로그램에 융통성이 필요하지 않을 수도 있습니다. 배열의 구체적인 한계를 알면 대신 전역 고정 배열을 사용할 수 있습니다. Carray를 사용하는 경우에는 CArray::SetSize를 사용하여 크기를 설정하고, 재할당이 필요할 경우 Carray를 몇 개 요소만큼씩 증가시킬지를 지정하십시오. 이 값을 지정하지 않고 요소를 추가하면 배열이 자주 재할당되고 복사될 수 있는데, 이는 비효율적이며 메모리가 조각화될 수 있습니다. 또한 항목을 배열에 삽입하면 Carray는 다음 항목을 메모리로 이동시켜 배열의 크기가 커질 수 있습니다. 이로 인해 캐시 누락과 페이지 폴트가 발생할 수 있습니다. MFC에서 사용하는 코드를 검토하면 시나리오와 관려된 더 구체적인 코드를 작성하여 성능을 향상시킬 수 있습니다. 예를 들어, Carray는 템플릿이므로 특정 형식에 Carray 특수화를 제공할 수 있습니다.

시간 중심의 코드 성능 향상을 위한 팁  (MSDN 참고)



    대략적으로 범위 지정
  - CArray.SetSize( 0 , 100000)
   정확한 갯수로 할당
  - CArray.SetSize(999999)

CArray의 대용량 데이터(정보) 추가 속도가 느리다면 (블로그 참고)