if else VS 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 구문 을 최대한 쓰지 않는 것이 최선이지만 행여나 쓰게 되더라도 최대한 작게 만들어서 사용하는 것이 좋습니다.
일단 두 구문에 대해서 간단하게 설명하자면,
- 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;
}
}
}
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;
}
}
}
댓글 없음:
댓글 쓰기