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