반응형
1. 배열 요소의 사용을 자제하라.
- JVM은 배열의 Index에Index에 대해 경계검사(bound-checking)을 하므로, 부하가 커진다.
접기
for (int i=0; i<Repeat; i++)
countArr[0] += 10;
==>
count = countArr[0];
for(int i=0; i<Repeat; i++)
count+=10;
countArr[0]=count;
countArr[0] += 10;
==>
count = countArr[0];
for(int i=0; i<Repeat; i++)
count+=10;
countArr[0]=count;
접기
2. 메소드의 호출로 반복문을 종료하지 마라.
접기
for(int i=0; i<collection.size(); i++)
==>
int max = collection.size();
for(int i=0; i<max; i++)
==>
int max = collection.size();
for(int i=0; i<max; i++)
접기
3. 인덱스 변수에는 int형을 사용하라
-- JVM은 int형에 최적화되어있다, 다른형을 사용할 경우 int로 암시적 캐스팅을 유발한다.
더보기
for(long i=0; i<Repeat; i++)
==>
for(int i=0; i<Repeat; i++)
==>
for(int i=0; i<Repeat; i++)
4. 효율적인 비교
- JVM은 -1,0,1,2,3,4,5로 비교하는것에 최적화 되어있다
더보기더보기
for(int i=0; i<Repeat; i++)
==>
for(int i=Repeat-1; i>=0; i--)
or
for(int i=Repeat; --i>=0; )
==>
for(int i=Repeat-1; i>=0; i--)
or
for(int i=Repeat; --i>=0; )
5. 숏서킷 연산을 앞쪽에 두어라
- aa || b, a && b 연산자는 앞의 조건을 통과해야 뒤의 조건절도조건절도 수행한다.
더보기
if ( a || b )
==> 더 빈번히 사용되는 조건을 앞쪽에 배치한다
==> 더 빈번히 사용되는 조건을 앞쪽에 배치한다
6. 반복문 안에서는안에서는 리플렉션(java.lang.reflect)의 사용을 자제하라
==> 직접 메소드를 실행하는 경우에 비해서 느리다느리다
※ 참고 : 자바 퍼포먼스 튜닝 : 성능 향상을 위한위한 205가지 핵심 기법
7장. 반복문,스위치,재귀