자바스크립트 팁, 자바 성능향상 팁 - JavaScript TIP performence tip


자바스크립트 팁, 자바 성능향상 팁 - JavaScript TIP performence tip

1.
일반적사항 관련 Tips

 

    ① 쓸데없이 Cast를 남발하면 바람직하지 않음.

   

     Loop구조에서 쓸데없이 cast를 남발하면 performance를 현저히 저하시킵니다.

 

      ) 쓸데없이 cast를 남발한 바람직하지 않은 코드예

 

      for(int i=0; i<list.size(); i++)

      {

        if ( ((String)list.get(i)).indexOf('a') ! =-1)  {

        } else if(((String)list.get(i)).indexOf('b') ! =-1)  {

        } else if(((String)list.get(i)).indexOf('c') ! =-1)  {

        } else if(((String)list.get(i)).indexOf('d') ! =-1)  {

        } ...

      }

 

      ) 쓸데없는 cast를 제거한 좋은 코드예

 

      for (int i=0; i<list.size(); i++)

      {

        String value = (String)list.get(i);

        if(value.indexOf('a') ! = -1) {

        } else if ((value.indexOf('b') != -1){

        } else if ((value.indexOf('c') != -1){

        } else if ((value.indexOf('d') != -1){

        } ...

      }

 

    ② 쓸데없이 동기화를 행하면 바람직하지 않음

   

        同期化(Synchronized)은 높은 cost입니다. 필요가 없을 시에는 사용하지 마십시요.

 

 

    ③ 쓸데없는 인스턴스생성은 바람직하지 않음

 

        인스턴스수가 많지 않은 경우에는 별 문제가 되지 않겠지만, 많은 인스턴스를 생성하는 경우에는
        performance
를 현저히 저하 시키므로 주의하십시요.

 

        ) String 인스턴스를 2번생성한 바람직 하지 않은 코드예

 

          String value = new String("문자열");

 

        ) 개량 후 코드예

 

          String value = "문자열";

 

 

    ④ 필요이상으로 Wrapper클래스를 사용하면 바람직하지 않음

 

        Wrapper클래스(Integer, Boolean )을 클래스멤버로 사용하는 경우 인스턴스생성이 필요하게 되므로,
       
기본적으로 Primitive형을 사용하는 편이 performance를 높
입니다.

 

        ) Wrapper클래스를 사용한 코드예

 

        public class Person {

 

          private Integer id;

          private Boolean isValid;

        };

 

        ) primitive형으로 치환한 코드예

 

        public class Person {

 

          private int id;

          private boolean isValid;

        };  

 

        또한 Wrapper클래스에는 없지만 java.math.BigDecimal 클래스는 Double 클래스보다 정확한 부동소수연산이
        가능하지만
performance를 저하시키므로 유의바랍니
.

 

    primitive형의 default값을 이용

 

int boolean형등의 primitive형은 선언시 default값이 초기화 됩니다. 이것을 이용하면 초기화처리를 생략할 수 있습니다. 덧붙여 말하면 int형은 0, float 0.0, boolean형은 false로 선언시에 초기화 됩니다.

 

        ) primitive형의 초기화처리를 행한 코드예

 

        public class Person {

 

          private int id;

          private boolean isValid;

 

          public Person() {

 

            id = 0;

            isValid = false;

          }

        }

 

        ) primitive형의 default값을 이용한 코드예

 

        public class Person {

 

            private int id;

            private boolean isValid;

 

            public Person() {

 

            }

          }

 

 

    ⑥ 문자열을 숫자형으로 변환하는 방법

 

        문자열을 숫자형으로 변환시에 각 Wrapper클래스(Integer,Double ) static 소드인 parseXXX()를 이용합니다.

        valueOf()를 경유해서 XXXValue()를 실행하면 한번의 인스턴스를 생성하게 되어 불필요한 cost를 들게 합니다.

 

        ) valueOf()를 이용하여 문자열을 숫자형으로 변환한 코드예

 

          double doubleValue = Double.valueOf("1234.56").doubleValue();

          int intValue = Integer.valueOf("123456").intValue();

 

        ) 개량한 코드예

 

          double doubleValue = Double.parseDouble("1234.56");

          int intValue = Integer.parseInt("123456");

 

 

    ⑦ 필요이상으로 System.gc()를 사용하면 바람직하지 않음

     

        필요이상으로 System.gc()를 이용하면 프로그램실행 performance가 저하됩니다.

 

이미지 맵

'IT Computer Utility/ETC' 카테고리의 다른 글

이전 글 다음 글