2014년 7월 8일 화요일

[Java] if else VS switch case



if else VS switch case


프로그래밍을 하다 보면 경우에 따라서 if else 구문을 사용하거나, switch case 구문을 사용합니다. 개개인 마다 선호하는 구문이 다르겠지만 어떤경우에 쓰면 더 유용한지에 대해서 알아보도록 하겠습니다.

일단 두 구문에 대해서 간단하게 설명하자면,


  • if else 구문은 조건하에 명령문을 수행하는 것
  • switch case 구문은 선택된 명령문을 수행하는 것


하지만 두 구문은 분명히 차이가 있습니다. 개인적으로는 if else 구문보다는 switch case 구문이 간결하고, 가독성 또한 더 좋다고 생각합니다.

하지만 switch case 구문은 제약이 있으며, 범위지정을 하기 어렵다는 단점이 있습니다.


















위에 표는 if else 구문 과 switch case 구문의 수행시간을 비교한 것입니다. iteration 이 작을 때는 수행시간이 비슷하게 나타나거나 오히려 if else 구문이 수행속도가 더 좋게 나온 경우도 있었지만, iteration 이 커지면 커질수록 수행시간이 눈에 띄게 차이나는 것을 알 수 있습니다.

개인적인 의견으로는 비교할 대상이 많아지면 if else 구문 보다는 가독성을 조금이라도 높이기 위해서 switch case 구문을 사용하는 것이 효율적일 것이라고 생각이 됩니다.

하지만 없으면 안 되는 기능들이지만, 꼭 필요한 경우가 아니라면 if else 구문이나 switch case 구문 을 최대한 쓰지 않는 것이 최선이지만 행여나 쓰게 되더라도 최대한 작게 만들어서 사용하는 것이 좋습니다.





  

활용예제


BlogTest.class


public class BlogTest {


              private final int iteration = 100;


              public void test() {


                            long startTime = System.nanoTime();


                            for (int i = 0; i < iteration; i++) {


                                          // new IfElse().process(i);

                                          // new SwitchCase().process(i);

                            }


                            long endTime = System.nanoTime();


                            System.out.println("the time taken= " +

                                                                                         (endTime - startTime) / 1000000);
              }

}


---------------------------------------------------------------------------------------------



IfElse.class


public class IfElse {


              public void process(int var) {


                            if (var == 1)

                                          System.out.println("1");

                            else if (var == 2)

                                          System.out.println("2");

                            else if (var == 3)

                                          System.out.println("3");

                            else if (var == 4)

                                          System.out.println("4");

                            // Omit the other cases


                            else

                                          System.out.println("default");
              }

}


---------------------------------------------------------------------------------------------



SwitchCase.class


public class SwitchCase {


              public void process(int var) {


                             switch (var) {


                             case 1:

                                       System.out.println("1");
                                       break;

                             case 2:

                                       System.out.println("2");
                                       break;

                             case 3:

                                       System.out.println("3");
                                       break;

                             case 4:

                                       System.out.println("4");
                                       break;

                             case 5:

                                       System.out.println("5");
                                       break;

                             // Omit the other cases


                             default:

                                       System.out.println("default");
                                       break;
                             }
             }
}





댓글 없음:

댓글 쓰기