Synchronized의 정의 하나의 객체에 여러 요청이 동시에 들어오면 연산이 꼬여 이상한 결과가 나올 수 있다.그래서 synchronized 를 선언하여 동기화를 시켜 한번에 한 요청씩 들어오도록 줄을 세우는 것이다. Synchronized를 사용해야 할 때 1. 하나의 객체를 여러 스레드에서 동시에 사용할 경우2. static으로 사용하는 객체를 여러 스레드에서 동시에 사용할 경우 이 외의 경우에 synchronized를 사용하면 대부분 성능에 영향을 미치므로꼭 필요한 경우가 아니면 사용하지 않도록 하자.
static을 잘 사용하면 성능을 향상시킬 수 있지만, 잘못 사용하면 더 느려지거나, 오류가 생기고, 최악의 경우엔 JVM이 죽어버릴 수 있다. static은 여러 JVM에서는 다른 주소나 값을 참조하지만, 같은 JVM이나 WAS에서는 같은 주소를 참조하고, GC의 대상이 되질 않기 때문에 잘못 사용하면 성능을 하락시킬 수 있다. 특히 웹에서는 하나의 static 변수에 여러 스레드가 접근할 수 있으므로 주의해야한다. Static을 잘 사용하기 위해서는 1. 자주 사용하고 절대 변하지 않는 변수는 final static으로 선언한다. 특히 자주 사용하는 쿼리들이나 간단한 목록조회 쿼리도 final static으로 선언하면 GC대상에 포함되지 않기 때문에 성능에 좋다. 즉 템플릿 성격의 객체를 static..
Switch-Case 문 Switch-Case문은 작은 숫자부터 큰 숫자 순서대로 비교하는 것이 제일 빠르다. 조건문 조건문자체는 속도에 미치는 영향이 미미하다. 가독성에 더 신경쓰자. do-while문 public void test(List list){ int i=0; do{ if(list.get(i) == 10) break; }while(true); } 만약 list의 0번째가 10이라면 정상적인 동작을 하겠지만, 아닐 경우 무한루프를 돌며 CPU의 코어 한개를 잡아먹으므로 프로그램을 재시작해야할 수 있다. 조심하자 List를 대상으로 반복 for(int i=0; i
SetSet의 종류에는 HashSet, LinkedHashSet, TreeSet이 있다. Set은 보통 여러 데이터를 넣어두고 해당 데이터가 존재하는지 확인할 때 사용한다.속도는 HashSet이나 LinkedHashSet이 빠르고, TreeSet은 나머지에 비해 현저히 느리다. 그렇다면 왜 TreeSet을 사용할까?TreeSet은 데이터를 저장하는 동시에 정렬한다.그렇기 때문에 데이터를 순서에 따라 탐색하는 작업이 필요할 때에는 TreeSet을 사용하는 것이좋다. 하지만 그럴 필요가 없을 때에는 속도가 빠른 HashSet이나 LinkedHashSet을 사용한다. List 자료형 / 속도순위 삽입 추출 첫번째 값 삭제 마지막 값 삭제 ArrayList 1위 1위 1위 1위 LinkedList 3위 3위 2..
JMH : http://openjdk.java.net/projects/code-tools/jmh/Caliper : http://code.google.com/p/caliper/ 와 JUnit 테스트코드 실행용 라이브러리도 있다. JUnitPerf : http://www.clarkware.com/software/JUnitPerf.htmlJUnitBench : http://code.google.com/p/junitbench/ContiPerf : http://databene.org/contiperf.html
- Total
- Today
- Yesterday
- Java
- 알람
- javascript
- rambda
- 자바 성능
- 프로세서
- 자바
- RAMDA
- 퍼포먼스
- Jackson
- 컴퓨터 시간
- 자료구조
- Stream
- Java8
- Docker
- 코어
- Swift 2.0
- 메모리
- 성능
- 날짜
- 리액트
- json
- Clojure
- gitlab
- 람다
- 시간
- 성능개선
- react
- opensource
- 클로저
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |