본문 바로가기

JAVA

sum 에 wrapper class를 쓰면?

0부터 Integer.MAX_VALUE까지 더한 결과를 구하는 프로그램을 만든다고 가정하자.
더한 결과를 저장하는 변수를 sum이라고 할 때, sum을 Long 으로 하는 것과 long으로 하는 것에는 차이가 난다.

Long sum = 0L; 으로 선언하게 되면, sum의 값이 바뀔 때마다 새로운 객체가 생성되어 성능이 느려지게 된다. 
실제로 아래 코드로 테스트를 해보니, Long의 경우는 6.2초 long의 경우는 0.79초로 long의 성능이 더 좋은 것을 확인할 수 있었다.

public class Main {

  public static void main(String[] args) {
    long time1 = System.currentTimeMillis();
    Long sum1 = 0L;
    for (long i = 0; i <= Integer.MAX_VALUE; i++) {
      sum1 += i;
    }
    long time2 = System.currentTimeMillis();
    long sum2 = 0;
    for (long i = 0; i <= Integer.MAX_VALUE; i++) {
      sum2 += i;
    }
    long time3 = System.currentTimeMillis();

    System.out.println("sum1 : " + (time2 - time1) + " sum2 : " + (time3 - time2));
  }
}

 

반응형

'JAVA' 카테고리의 다른 글

AOP 용어 정리  (0) 2023.04.16
try-with-resource  (0) 2022.07.14
도메인 주도 설계 - 1부 동작하는 도메인 모델 만들기  (0) 2022.04.19
Adapter Pattern 과 SLF4J  (0) 2021.08.27
Log4j 알아보기  (0) 2021.08.16