instanceof 비교와 .getClass() 비교의 성능 JAVA

자바에서 Object 객체의 형변환이나 형 확인을 할때 instanceof를 사용하거나 .getClass()로 확인할 수 있는데 두 경우에 어떤 것이 더 성능이 나은지 궁금해서 다음의 테스트 코드로 확인해 보니 instanceof로 비교하는 경우 더 빠른성능을 보여주었다. 정말 조금 빠른거긴 하지만 많이 사용하는 부분에 해당 코드가 있으면 분명히 차이는 있을것 같다.

가능하면 instanceof를 사용하자!

<테스트코드>

    @Test
    public void test()
    {
        String str = "aaaa";
        Integer i = 10;
        Long l = (long)100;
        int a = 0;
       
        long t1 = (long)0;
        long t2 = (long)0;              
       
        t1 = System.currentTimeMillis();
       
        for(i = 0; i < 100000; i++)
        {
            if(str.getClass() == String.class)
                a++;
           
            if(i.getClass() == Integer.class)
                a++;
           
            if(l.getClass() == Long.class)
                a++;
        }
       
        t2 = System.currentTimeMillis();
       
        System.out.println("running time : " + (t2 - t1));
        System.out.println("a : " + a);
       
        a = 0;
       
        t1 = System.currentTimeMillis();
       
        for(i = 0; i < 100000; i++)
        {
            if(str instanceof String)
                a++;
           
            if(i instanceof Integer)
                a++;
           
            if(l instanceof Long)
                a++;
        }
       
        t2 = System.currentTimeMillis();
       
        System.out.println("running time : " + (t2 - t1));
        System.out.println("a : " + a);
    }

<결과>

running time : 12
a : 300000
running time : 8
a : 300000

덧글

댓글 입력 영역