본문 바로가기

컴퓨터 상식

[Java] Boxing vs No Boxing 속도 차이

결과부터 말하자면 별로 차이 안난다.

 

import java.util.function.IntPredicate;
import java.util.function.Predicate;

public class study {
    public static void main(String[] args) {

        IntPredicate evenNumbers = (int i) -> i % 2 == 0;
        Predicate<Integer> oddNumbers = (Integer i) -> i % 2 != 0;

        int beforeTime, afterTime, result;
        int circle = 100000000;

        // Warm-up
//        beforeTime = (int) System.currentTimeMillis();
//        for (int i = 0; i < circle; i++) {
//            evenNumbers.test(1000);
//            oddNumbers.test(1000);
//        }
//        afterTime = (int) System.currentTimeMillis();
        // Warm- up end

        beforeTime = (int) System.currentTimeMillis();
        for (int i = 0; i < circle; i++) evenNumbers.test(1000); // NoBoxing
        afterTime = (int) System.currentTimeMillis();

        System.out.println("No boxing : " + (afterTime - beforeTime));

        beforeTime = (int) System.currentTimeMillis();
        for (int i = 0; i < circle; i++) oddNumbers.test(1000); // Boxing
        afterTime = (int) System.currentTimeMillis();

        System.out.println("BOXING : " + (afterTime - beforeTime));
    }
}

 

100,000,000 번 연산할 때 Boxing과 Noboxing의 차이를 알고 싶어서 실험을 진행했는데

 

연산 횟수가 1억인거 치고는... 4밀리초 정도 차이가 났다.

 

생각보다 차이가 많이 나지않아서 시무룩...