반응형
자바 성능을 결정짓는 코딩 습관과 튜닝이야기 - 읽고- (5)
* 반복구문 사용 시 유의 할점
- for, switch ~ case, while 등이 있으면 while의 경우 무한반복의 위험이 있으므로, switch ~ case 경우 검색 조검이 많이 들어가므로 for 문을 사용하라.
- for문의 경우 반복해서 고정적인 값을 가질때는 for문 밖에서 정의해서 사용하는것이 속도 향상에는 도움이 된다.
.EX)for문의 사이즈 a.length, b.size() 의 경우 for문 상단에서 객체를 사용 받아서 사용한다.
- 불필요한 반복 메소드 요청을 파악하여 for문 밖에서 정의 한다.

 

반응형
LIST
반응형
자바 성능을 결정짓는 코딩 습관과 튜닝이야기 - 읽고- (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

+ Recent posts