본문 바로가기

CS(컴퓨터 사이언스)/알고리즘

[알고리즘] if, elif, else 와 if, if, if의 차이

IF~ ELSE~ / IF~ IF~

나만 몰랐을 수도 있고 단순해서 무시할 수도 있는 부분이지만

if~elif~else~ 구문과 if~if~if~ 구문의 용도와 실행 속도에 대한 이야기이다.

 

너무나도 당연히 자연스럽게 if~ else~를 사용하고 있지만

짧은 코드, 짧은 실행속도를 고려하면서 든 의문인데

조건문에서 단순히 확인해야 할 조건이 2가지나 3가지라면

if~ elif~ else 보다 if~ if~ if~ 혹은 if~ if~ else~가 빠르고 

코드도 더 짧지 않을까 라는 생각이 들었다.

 

궁금한 건 눈으로 찍어봐야 직성이 풀리기 때문에

간단한 코드로 실행 시간을 비교해 보았다.

 

테스트

<첫번째 조건문에 걸리게>
<두번째 조건문에 걸리게>

if~ elif~ 구문의 elif에서 조건이 걸리도록 테스트 했을때를 보면

if~ if~를 사용했을때의 시간보다 빠르게 나오기는 하지만

그렇게 큰 시간차이를 보이지는 않는다.

 

그렇다면 3가지 조건일때 케이스를 한번 보자.

<if elif else>
<if if else>
<if if if>

if~ elif~ else~ 가 하나의 루프에서 동작하기 때문인지

if~ if~ if~를 이용하여 개별 비교할 때보다 실행속도가 빠르다.

이전 2개의 조건일때보다 확실히 큰 시간 차이를 보여준다.

if~ if~ if~의 경우 else 구문이 없다보니 한번더 비교를 해야해서

실행시간에서 큰 차이가 발생하는 것이 보인다.

 

물론 엄청나게 짧은 시간 단위이기 때문에 사람이 체감하진 못하지만

비교해야 할 값이 많아진다면은 엄청난 시간 차이를 발생시킬 수도 있다.

 

결론

결론은 비교에서 one or nothing인 경우나 묶어서 한번에 처리해야할 경우에

비교할 건수가 많다면 if~ else~ 혹은 if~ elif~ else~가 확실히 유리하다.

단순 비교 건수가 적고 일종의 트리거처럼 특정 조건을 걸고 싶은 경우라면

경우에 따라 if~ if~를 사용하는 것이 필요할 수도 있다.

(이런 경우가 아마 거의 없을것으로 생각되지만)