본문 바로가기

나만의 작업

Java 성능개선을 위한 Programming 기법

 Performance CheckList

. 임시로 사용하기 위해 Object를 생성하는 것을 피하라. 특히 Loop에서..
. 빈번하게 호출되는 메소드에서 Object를 생성하는 것을 피하라.
. 가능한 Object를 재사용 하라.
. 임시 Object의 생성을 줄이기 위해 데이타 타입 컨버전 메소드를 재정의 하는 방법을 고 려하라.
. 메소드 설계 시 데이타를 유지하고 있는 Object를 반환하는 메소드보다 데이타로 채워진 재사용 가능한 Object에 접근하는 메소드를 정의하라.
. string이나 Object를 integer 로 대치하라. Object 비교를 위해 equal() 메소드를 호출하지 말고 기본 데이타 타입의 == 연산자를 사용하라.
. 인스턴스 변수로 기본 데이타 타입을 사용하라.
. 단지 메소드 호출을 위해 Object를 생성하는 것을 피하라.
. String 연속 연산자 (+)를 사용하는 것보다 StringBuffer 클래스를 사용하라.
. 복사본을 생성하는 메소드 보다 Object를 직접 수정하는 메소드를 사용하라.
. 생성자는 간단하게... 상속 계층은 얕게...
. 인스턴스 변수를 초기화 하는 것은 한 번 이상 하지 말 것.
. 생성자 호출을 피하기 위해 clone() 메소들 사용할 것.
. 간단한 배열일 경우에는 초기화를.. 복잡한 배열일 경우에는 clone() 메소드 호출.
. 프로그램 내부에서 Object 생성 시기를 조절해서 Object 생성에 따른 bottlenecks를 없앤 다.
. 어플리케이션 내부에서 여분의 시간이 허용된다면 가능한 Object를 빨리 생성하라. 생성 된 Object를 내부적으로 유지하고 있다가 요청이 발생하면 할당하라.
. 사용 가능성이 희박하거나, 분산처리에 의해 Object를 생성할 경우 Object는 생성 시기를 늦춰라

프로그래밍 스타일

Java Programming Style Guidelines

번역

Code Conventions for the JavaTM Programming Language

태그

  • 고려하면서 프로그래밍하기는 좀 복잡하네요. ^^;; 복잡하다기보다 편의를 위해 사용하는 것들이 많아서 자바/C# 언어의 장점인 편의와 대치되는 것들이 좀 있는 것 같아요.
    그리고 equals() 메소드 대신 == 를 쓰면 안되는 상황도 있고요.(equals() 재정의 같은 경우...)
    퍼포먼스 향상이 꼭 필요할 때 체크리스트로 활용하면 좋겠네요 ^^

    • 버리야 2007.06.28 00:48 댓글주소 수정/삭제

      예전에는 어떻게 짜면 될까,,를 고민했는데
      이제는 어떻게 짜면 이쁘게 짤까,, 고민이 되네요..

      디자인패턴이나 퍼포먼스 향상 공부를 해도
      적용은 쉽지 않지만 잊지는 않아야겠죠..
      늘 염두해 두고 프로그래밍을 해야한다는건,,^^

  • 뜨아~ 저렇게나 많이!

  • String를 연속해서 + 를 사용하는 경우에 complier 가 알아서 StringBufferf로 변경해주는 경우도 있답니다. ㅎ ;; ( 디컴파일 하니깐 그렇게 나오더라구요~ 우연찮게 발견. ㅋ ^_^;; ㅎㅎ )

  • 자동으로 해 준다고 해도, 구조상 효과가 없는 경우도 있겠죠~ ^_^