if 문 시간 비교하기

Updated:

Case 1

for i in range (0, 100):
    if i > 50 and i == 50:
        continue

Case 2

for i in range (0, 100):
    if i == 50 and i > 50:
        continue

(i == 50 and i > 50), (i > 50 and i == 50) 둘중 어느 연산이 더 시간이 빠르게 진행될까요.

일단 앞에 경우가 더 빠르게 진행이 됩니다. 왜냐하면 i == 50은 단순하게 값만 비교하는데 i > 50 연산은 i - 50 을 한뒤에 양수인지 음수인지 0인지 확인해서 조건이 참인지 알아내기 때문입니다.

한번 정말로 차이가 있는지 언어별로 차이를 확인해볼게요.

C++

#include <iostream>
#include <time.h>

using namespace std;

int main(int argc, const char * argv[]) {
    time_t start, end;
    
    start = clock();
    
    for(int i = 0; i < 10000000; i++){
        if (i > 5000000 && i == 5000000) continue;
    }
    
    end = clock();
    
    cout << "First Time : " << double(end - start) << endl;
    
    start = clock();
    
    for(int i = 0; i < 10000000; i++){
        if (i == 5000000 && i > 5000000) continue;
    }
    
    end = clock();
    
    cout << "Second Time : " << double(end - start) << endl;
    
    return 0;
}

Result

First Time : 17222
Second Time : 17207
Program ended with exit code: 0

Python

import time

start = time.time()  # 시작 시간 저장

for i in range (0, 10000000):
    if i > 5000000 and i == 5000000:
        continue

print("First time :", time.time() - start)  # 현재시각 - 시작시간 = 실행 시간

start = time.time()  # 시작 시간 저장

for i in range (0, 10000000):
    if i == 5000000 and i > 5000000:
        continue

print("Second time :", time.time() - start)  # 현재시각 - 시작시간 = 실행 시간

Result

First time : 0.7221870422363281
Second time : 0.5454361438751221

Java

public class Test {
    public static void main (String[] args){
        long start = System.currentTimeMillis();

        for(int i = 0; i < 10000000; i++){
            if (i > 5000000 && i == 5000000) continue;
        }
        long end = System.currentTimeMillis();

        System.out.println( "First Time : " + ( end - start ) / 1000.0);
        
        start = System.currentTimeMillis();

        for(int i = 0; i < 10000000; i++){
            if (i == 5000000 && i > 5000000) continue;
        }
        end = System.currentTimeMillis();

        System.out.println( "Second Time : " + ( end - start ) / 1000.0);
    }
}

Result

First Time : 0.008
Second Time : 0.005

Leave a comment