반응형
for문을 사용할때 적은 양의 반복건은 사실 큰 성능 차이는 없다.
하지만 10,000건 이상 되는 예를들어 통계데이터, 엑셀파일로 데이터 추출 등등
대량 데이터에 대해 반복문을 시행할때 어떻게 작성하느냐에 따라 속도차이가 심하다.
아래와 같이 다중 for문 형태에서
Case1 (기본)
첫 번째
for(int i=0; i<100; i++){
for(int j=0; j<1000000; j++){
tempNumber++;
ForTest forTest = new ForTest();
}
}
두 번째
for(int i=0; i<1000000; i++){
for(int j=0; j<100; j++){
tempNumber2++;
ForTest forTest = new ForTest();
}
}
=> 근소한 차이(0.03초에서 2초 - size가 커지면 커질수록 차이가 더 남.) 로 첫 번째 타입이 더 빨랐다.
Case2 (객체생성)
첫 번째
for(int i=0; i<100; i++){
for(int j=0; j<1000000; j++){
tempNumber++;
ForTest forTest = new ForTest();
}
}
두 번째
for(int i=0; i<1000000; i++){
for(int j=0; j<100; j++){
tempNumber2++;
ForTest forTest = new ForTest();
}
}
=> 의외로 두 번째가 아주 조금 더 빨랐다.
Case3 (List생성 및 add)
첫 번째
for(int i=0; i<100; i++){
for(int j=0; j<1000000; j++){
tempNumber++;
List list = new ArrayList();
list.add(i);
list.add(i);
list.add(i);
list.add(i);
}
}
두 번째
for(int i=0; i<1000000; i++){
for(int j=0; j<100; j++){
tempNumber2++;
List list = new ArrayList();
list.add(i);
list.add(i);
list.add(i);
list.add(i);
}
}
=> 첫번째 케이스가 월등히 빨랐다.
* 총 반복횟수 보다 컬렉션, 배열 등의 로직의 여부가 성능차이를 좌지우지 했다.
밖의 for문은 size가 작은 객체로 구성해야 한다.
반응형
'Back > Spring Java' 카테고리의 다른 글
@Async 비동기 호출 (0) | 2020.04.27 |
---|---|
for문(Loop) 성능 개선 - 2 (0) | 2020.04.16 |
File객체를 이용한 파일삭제 (0) | 2020.04.01 |
OutputStream를 이용한 파일생성 (0) | 2020.04.01 |
No 'Access-Control-Allow-Origin' header is present on the requested resource. (CORS policy) (0) | 2020.03.02 |