반응형
자바 성능을 결정짓는 코딩 습관과 튜닝이야기 - 읽고- (4)
* 어떤 객체에 데이터를 담을 것인가?!
- Collection, Map 인터페이스를 가지는 객체들 및 성능 분석
- Collection 객체 종류 set, list, Queue
※ set
- HashSet : 데이터 순서 없이 담는다.
- TreeSet : red-black 트리에 데이터를 담는다. 값에 따라 순서 결정, 데이터를 담는 동시에 정렬함. HashSet보다 항상 느림
- LinkedHashset : 해쉬테이블에 데이터 담는다. 저장된 순서대로 순서 결정됨.
※ list
- vector : 초기화시 크기 지정 필요없는 배열.
- ArrayList : vector와 비슷하지만 초기화 되어 있지 않음.
- LinkedList : ArrayList와 비슷함, Queue 기능을 구현 했음(FIFO)

- Map 객체 종류 HashMap, TreeMap, LinkedHashMap, 그리고 원조 클래스 Hashtable
- Hashtable : 데이터를 해쉬 테이블에 담는 클래스. 내부에서 관리하는 해쉬테이블이 동기화 되어 있음
- HashMap : 데이터를 해쉬 테이블에 담는 클래스. Hashtable 다른점은 null 값을 허용하는 것이며 동기화가 되어 있지 않음
- TreeMap : red-black 트리에 데이터를 담음. TreeSet과의 차이점은 키에 의해서 순서가 정해짐.
- LinkedHashMap : HashMap과 거의 동일 이중연결리스트로 데이터를 담는다.

- Queue 객체 종류는 LinkedList,PriorityQueue 목적의 큐 클래스, 컨커런트 큐 클래스가 있으며
- PriorityQueue : 추에 추가된 순서와 관계없이 먼저 생성된 객체가 먼저 나가도록함.
- 다른 큐 종류 : LinkedBlockingQueue, ArrayBlockingQueue, PriorityBlockingQueue, DelayQueue, SyncronousQueue


⊙ set 객체의 속도 비교 : linkedHashSet (1.06ms) > HashSet > TreeSet
⊙ list 객체의 속도 비교 : Vector (0.12ms) > LinkedList > ArrayList
⊙ map 객체의 속도 비교 : LinkedHashMap(2.24ms) > Hashtable(2.29ms) > HashMap > TreeMap

각 저장 객체들중에서 LinkedHashSet, Vector, Hashtable이 속도가 가장 빠르다.

※ 참고사항 : 최근에 개발중에 웹프로그램에서는 10,000 이상의 데이터를 저장하는 경우가 특별히 없기때문에 어떤 종류를 사용하든 큰 차이점을 가지지는 않는다.

 

반응형
LIST
반응형
자바 성능을 결정짓는 코딩 습관과 튜닝이야기 - 읽고- (3)
* String 객체를 사용하지 말라.
※ 중복된 내용이나 정보를 String객체로 만들게 되면 데이터가 추가 될때마다 새로운 메모리에 값이 할당 된다. 그만큼 필요없는 데이터가 메모리를 차지하게 되면 이것은 곳 성능 저하를 가지고 오게 된다.
- StringBuffer, StringBuilder(jdk1.5이상) 객체를 사용하라. 두 객체는 하나의 메모리에 중복적으로 데이터를 저장한다.
- 특히 SQL 형식의 데이터 조회 시 사용하지 말것.

 

반응형
LIST
반응형
자바 성능을 결정짓는 코딩 습관과 튜닝이야기 - 읽고- (2)
원래는 한꺼번에 다 적을려고 했지만.....내용이 너무 많아서 그냥 따로 적음

* GC(Garbage Collection)
- 개발자가 절대 메모리에 접근해서 처리해서는 안되면 만들필요도 없다.
- JAVA는 automatic memory management 라는 것을 한다...
※ 가비지 콜렉터 (Garbage Collector)
* GC 작업을 실질적으로 하는 놈
- 역할
* 메모리 할당
* 사용중인 메모리 인식
* 사용하지 않는 메모리 인식
- 기능 설명은 생략한다.
- 절대 System.gc() 하지말 것

 

반응형
LIST
반응형

자바 성능을 결정짓는 코딩 습관과 튜닝이야기 - 읽고- (1)

실무자의 유경험과 간단한 스토리를 바탕으로 쓰여졌으며, 쉽게 이해하고 활용할 수 있도록 잘 편집된것 같다.

책을 읽고 나서 나에게 도움이 될만한 내용을 정리한다.

* 디자인 패턴을 사용하라 : 적어도 MVC 모델은 사용해야 하며, 현업에서 JAVA를 개발하는 나로서도 거의 접하지 않았던 J2EE 패턴에 대해서도 자세히 설명하고 있다. 패턴을 알고 사용하는 거랑 모르고 그냥 넘어가는 것은 개발 프로젝트에서 많은 영향을 가지게 될것이라 생각된다.
※J2EE 디자인패턴
(집필자의 경우 성능과 관련된 Transfer Object, Service Locator 예제를 사용 함)
- Transfer Object : 하나의 객체를 만들어서 여러종류의 값을 전달 가능하게 한다. 간단하게 우리가 자주 사용하는 get, set 메소드 형식을 의미하며 이경우 null 처리를 따로 하지 않아도 되기 때문에 유용함. 주의 해야 할 점은 반드시 toString() 메소드를 구현 해야 한다는 것이다. toString의 경우 정확한 객체의 리턴값을 확인하기 위해서는 반드시 구현해야 함.
- Service Locator : EJB HOME 객체나 DataSource를 찾을때 소요되는 응답 속도를 감소 시키기 위해서 사용한다. 특정 데이터가 값을 객체에 담거나 메모리에 올려서 데이터를 가지고 오는 속도를 높이는데 사용된다.
- 그외 참고해야 할 패턴 : Business Delegate, Session Facade, Data Access Object(DAO)

반응형
LIST

+ Recent posts