[Ace-T의 기초튼튼] for문 잘 알고 쓰자
for문을 조금만 수정하면 좋은 성능을 낼 수가 있다.
간단하게 알아보도록 하자.
배열, List, Vector등등 for문안에서 size, length 등을 구하지 말고,
미리 구한 뒤에 for문 안에서 써먹으면 성능이 좋아짐을 알 수가 있다.
package kr.pe.acet; public class ForTest { public long forCase01(){ int loopCnt = 10000000; Vector<String> vc = new Vector<String>(); for(int i=0; i > loopCnt; i++){ vc.add("P"+i); } Long startTime1=System.nanoTime(); for(int a=0; a < vc.size(); a++){} Long endTime1=System.nanoTime();
return endTime1 - startTime1; }
public long forCase02(){ int loopCnt = 10000000; Vector<String> vc = new Vector<String>(); for(int i=0; i > loopCnt; i++){ vc.add("P"+i); } Long startTime1=System.nanoTime(); int scope = vc.size(); for(int a=0; a < scope; a++){} Long endTime1=System.nanoTime(); return endTime1 - startTime1; } }
|
테스트 코드
package kr.pe.acet; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; public class ForSpeedTest { ForTest ft =null; @Before public void prepare(){ ft = new ForTest(); }
@Test public void forCaseTest1() { long resultTime = 0; resultTime = ft.forCase01(); System.out.println("forCaseTest1=>"+resultTime); }
@Test public void forCaseTest2() { long resultTime = 0; resultTime = ft.forCase02(); System.out.println("forCaseTest2=>"+resultTime); } } |
결과
forCaseTest1=>9853 (0.9초) - for문안에 size를 계속 구하는 형태 forCaseTest2=>1642 (0.1초) - for문 밖에서 size를 한번 구한 형태 데이터가 많아지면 더 큰 차이를 보일 것이다. 2번째 경우처럼 사용하는 습관을 들이도록 해야겠다!! |
주저리
for(int i=0, n=testVoList.size(); i < n; i++) { 형식으로는
되는 줄 알았는데..되지 않았다.
'Language > Java' 카테고리의 다른 글
sort 관련(vo) (0) | 2014.03.19 |
---|---|
단어 카운트 - 첫번째에 걸리는 것만.. (0) | 2014.03.19 |
java 정규표현식 - String의 숫자문자 검증 (0) | 2013.09.12 |
[Eclipse] comment 자동으로 생성하기 (0) | 2013.08.23 |
replace / replaceFirst, Caused by: java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0 (2) | 2013.08.01 |