티스토리 뷰

애플리케이션 최적화

 

Optimization

최적화란?
• 정보공학에서 시스템을 수정하여 어떠한 면의 작업을 더 효과적으로, 또는 자원을 덜 사용하도록 만드는 작업
• 컴퓨터 프로그램은 더 빠르게 실행되거나 기억 장치 또는 자원을 덜 차지하게 하여 운영하도록 개선
• 유지보수의 편의성을 고려한 코드 개선
• 안정성 확보를 위한 최적화

최적화 기법

  • 병목지점 찾기(소요시간)
  • 구조체 복사 시 대입연산자 대신 라이브러리 함수를 이용
  • 구조체 전달은 포인터를 이용
  • 함수의 매개변수를 축소 : 4개이하 : 레지스터 이용 / 4개이상 : 스택이용
  • 4바이트 이상 전달 시 포인터를 이용
  • 4개 이상인 경우 인자를 구조체로 선언하고 구조체 포인터를 매개변수로 전달
  • const를 적절히 활용
  • 2의 n 제곱을 곱하는 연산은 쉬프트 연산 수행
  • 실수연산을 축소
  • 소수점 이하 2자리까지만 필요한 연산
  • 지역변수를 최대한 활용
  • 전역변수 사용을 최소화

최적화 작업하기

 

*구조체는 포인터로 전달*

struct test {
    int a,b;
    double c;
};
void sub( struct test si )
{
    ……
}
int main()
{
    struct test im;
    ……
    ……
    sub( im );
    ……
}

 

*바이트(Byte) 이상의 데이터는 포인터로 전달*

void sub( double m1, double m2 )
{
    ……
}
int main()
{
    double im, si ;
    ……
    ……
    sub( im, si );
    ……
}

 

*여러 개의 매개변수를 구조체로 전달*

struct test {
    int a,b;
    double c;
};
void sub( double o, double p, double q, double r, double s )
{
    ……
}
int main()
{
    double a,b,c,d,e;
    struct test im;
    ……
    ……
    sub( a,b,c,d,e);
    ……
}

 

*연산의 최적화 - 실수 연산을 최소화(정수의 연산으로)*

int main()
{
    double a=5.0, b=3.0, c;
    double d=15.34, e=3.0, f;
    c = a * b;
    f = d * e;
}
int main()
{
    int p,q,r;
    double a=5.0, b=3.0, c;
    double d=15.34, e=3.0, f;
    p = a;
    q = b;
    r = p * q;

    p = d * 100; // 소수점 이하 2자리의 배정도
    q = e * 100;
    f = ( p * q )/100;
}

 

*안정성 확보를 통한 최적화 - const활용*

void sub( const double m1, double m2 )
{
    m2 = 4.7
}
int main()
{
    double im, si ;
    ……
    ……
    sub( im, si );
    ……
}

 

'JAVA기반 스마트웹 개발2021 > 프로그래밍 언어활용' 카테고리의 다른 글

문자처리 라이브러리  (0) 2021.08.08
라이브러리  (0) 2021.08.07
디버깅  (0) 2021.08.07
프로그래밍 언어별 특성  (0) 2021.08.07
애플리케이션 구현  (0) 2021.08.02
댓글
© 2018 webstoryboy