공부/C언어, C++
[C언어/C++] printf, scanf / cout, cin 속도 차이
이니셜P
2023. 3. 14. 04:44
반응형
공부를 하다 보니 "cout은 느리다 printf를 써라", "cin은 느리다 scanf를 써라"라는 글을 보았다.
얼마나 느리다는거지?
궁금해서 바로 테스트 해보았다.
#include <stdio.h>
#include <iostream>
#include <time.h>
int main()
{
using namespace std;
char let = 'z';
char str[5] = "abc";
clock_t start_time = clock();
for (int i = 1; i <= 50000; i++)
printf("z %c abc %s\n", let, str);
//cout << 'z' << let << "abc" << str << endl;
printf("%dms\n", clock() - start_time);
system("pause");
return 0;
}
scanf와 cin의 속도 비교보다는 printf와 cout의 속도 비교가 비교적 쉬울 거 같아서 clock 함수 사용을 위해 time.h 헤더 선언을 하고 printf와 cout의 속도를 비교할 수 있는 코드를 짜봤다.
원리는 간단하다.
printf와 cout를 5만 번(ㅋㅋㅋㅋㅋ) 호출하는데 호출 전 시간과 5만 번의 반복문을 끝내고 난 뒤의 시간을 비교하는 것이다.
7초 조금 안되게 걸렸다.
바로 cout도 측정을 해본다.
공평성(?)을 위해 따로따로 실행하였다.
14초가 걸렸다.
5만 번을 돌리기 전에 간단하게 100번만 돌려봤는데 각각 30ms 60ms 두 배 차이가 났는데 5만번을 돌렸을 때에도 2배 차이가 난다.
결론은 확실히 cout이 느리다.
반응형