Ace-T's Blog 내 검색 [네이버 커넥트 이웃 합니다~^-^/ 요청 大 환영~~]

[Ace-T의 기초튼튼] for문 잘 알고 쓰자

Language/Java 2013.12.16 16:08
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

 

 

[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++) { 형식으로는 

 되는 줄 알았는데..되지 않았다.

저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

티스토리 툴바