'Performance'에 해당되는 글 1건

  1. 2007.01.19 java performance tips

java performance tips

java 2007. 1. 19. 15:56
http://javaservice.net/~java/bbs/read.cgi?m=resource&b=javatip&c=r_p&n=1045092122&k=piper2&d=u#1045092122 -------------- 제목 : Java Performance tip입니다. 글쓴이: piper2(piper2) 2003/02/13 08:22:02 조회수:3439 줄수:6 Java Press (http://www.gihyo.co.jp/magazines/javapress) 라는 일본의 Java전문 서적(2003년 2월판)에서 발췌한 Java performance tips입니다. 그중 Java 일반적사항에 관련하여 7개, String 관련2개, Collection관련 8개, IO관련2개등 총 4개 분야 19여개의 Tips에 대해 제가 나름대로 번역해본 자료입니다. ------------- Java performance tips Java Press (http://www.gihyo.co.jp/magazines/javapress) 라는 일본의 Java전문 서적(2003년 2월판)에서 발췌한 Java performance tips입니다. 그중 Java 일반적사항에 관련하여 7개, String 관련2개, Collection관련 8개, IO관련2개, 등 총 4개 분야 19여개의 Tips에 대해 설명하겠습니다. 1. 일반적사항 관련 Tips ① 쓸데없이 Cast를 남발하면 바람직하지 않음. Loop구조에서 쓸데없이 cast를 남발하면 performance를 현저히 저하시킵니다. 예) 쓸데없이 cast를 남발한 바람직하지 않은 코드예 for(int i=0; i 0 ) { list.add(word.substring(now,next)); now = next + 1; } 또한 StringTokenizer클래스에는 hasMoreElements()와 hasMoreTokens() 두개의 메소드가 있는데, hasMoreElements()가 내부적으로 hasMoreTokens()를 호출하 므로 통상적으로 hasMoreTokens()를 이용 하도록 합니다. 참고) J2SE 1.4부터 새로운 메소드가 추가된것이 있는데, SringTokenizer 클래스의 token 추출과 같은 기능의 메소드로 java.lang.String 클래스의 split()메소드를 소 개합니다. String word = "aaa,bbb,ccc,ddd,eee,fff"; String [] result = word.split(","); 3. Collection관련 Tips ① 배열의 이용 데이타의 개수나 사이즈가 변동하는 경우에만 Collection계통의 클라스를 사용하며, 그외에는 배열을 사용합니다. ② J2SE1.2이상에서의 Collection이용 JDK1.1까지는 Vector클래스나 Hashtable클래스가 편리했으나, 이러한 클래스는 메소드가 동기화(synchronized) 되어 있습니다. 따라서 동기화가 필요없는 경우에는 비효율적입니다. J2SE1.2이상에서는 메소드가 동기화되어있지 않은 ArrayList클라스나 HashMap클 래스를 이용합니다. Vector클래스는 ArrayList로 Hashtable은 HashMap클래스로 바꿔이용합니다. 예) 구 Collection클래스 이용예 Vector vector = new Vector(); Hashtable table = new Hashtable(); 예) J2SE1.2이상 Collection클래스 이용예 List list = new ArrayList(); Map map = new HashMap(); 또한, J2SE1.2이상에서 Collection의 동기화가 필요한 경우에는 List list = Collection.synchronizedList(new ArrayList(..)); 위와 같이 사용합니다. ③ Collection size 초기화 Collection을 default 사이즈로 만들면, 필요시 자동적으로 사이즈가 확장되나 명확히 예측이 가능한 경우에는 사이즈를 초기화 하는 편이 훨씬 효율적입니다. 예) 사이즈를 지정하지 않고 Collection을 생성한 코드예 List list = new ArrayList(); HashMap map = new HashMap(); 예) 사이즈를 지정한 Collection 생성 코드예 List list = new ArrayList(num); HashMap map = new HashMap(num); ④ Iterator클래스보다 빠른 요소검사 Collection 사이즈를 명확히 알 경우에는 Iterator클래스의 next()와 비교하여, Iterator클래스의 hasNext()에 의한 요소종료 체크가 필요없으며 내부처리가 간단한 List클래스의 get()메소드를 추천합니다. 예) Iterator클래스의 next()에 의한 요소조사 Iterator iterator = array.iterator(); while (iterator.hasNext()) { Object object = iterator.next(); } 예) List클래스의 get()에 의한 요소조사 int size =array.size(); for (int i=0; i