IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
메인 컨텐츠로 가기

한국 developerWorks  >  AIX and UNIX | 리눅스  >

C/C++ 프로젝트에 사용할 메모리 관리자 직접 구현하기 (한글)

developerWorks
Go to the previous page15 페이지 중 5 페이지Go to the next page

문서 옵션

샘플 코드


제안 및 의견
피드백

튜토리얼 평가

이 컨텐츠를 개선하기 위한 도움을 주십시오.


C++ new/delete 연산에 걸리는 시간

간단한 예제로 시작하겠다. 프로그램에서 복소수를 표현하는 Complex 클래스를 사용한다고 가정하자. 또한 프로그램은 newdelete 연산을 사용해서 복소수를 할당하고 해제한다. 코드는 Listing 1 과 같다.


Listing 1. C++로 구현한 Complex 클래스
                    
class Complex 
  {
  public:
  Complex (double a, double b): r (a), c (b) {}
  private:
  double r; // Real Part
  double c; // Complex Part
  };
  
int main(int argc, char* argv[]) 
  {
  Complex* array[1000];
  for (int i = 0;i  <  5000; i++) {
    for (int j = 0; j  <  1000; j++) {
      array[j] = new Complex (i, j);
      }
    for (int j = 0; j  <  1000; j++) {
      delete array[j];
      }
    }
  return 0;
  }      
				

안쪽 루프 두 개는 메모리를 1000번 할당하고 1000번 해제한다. 바깥쪽 루프는 안쪽 루프 두 개를 5000번 반복한다. 즉 프로그램을 실행하면 사용자 코드와 커널 코드 사이에 문맥 전환이 1000만 번 일어난다. 솔라리스 10에서 gcc-3.4.6으로 프로그램을 컴파일하여 돌리면 평균 3.5초가 걸린다. 이 값이 컴파일러가 제공하는 전역 new / delete 연산을 사용하는 경우에 얻어지는 기준 성능 지표다. 컴파일러보다 속력을 높여주는 메모리 관리자를 직접 구현하려면 Complex 클래스에 new / delete 연산을 재정의해야 한다.




위로



Go to the previous page15 페이지 중 5 페이지Go to the next page
    IBM 소개 개인정보 보호정책 문의