백준을 풀다 보면 가끔 혹은 매우 많이 시간초과에 부딪친다.
이것을 고치기 위해서 구글링을 해보면 endl이 아닌 "\n"을 추천한다.
그래서 얼마나 차이가 나는지 실제 속도를 비교해 보자
비교방법
Hello, World! 를 반복문으로 10000000번 반복하고 출력시간을 측정한다.
C++ Compiler 버전
CLION 2023.3.2
endl을 사용
#include <iostream>
#include <chrono>
using namespace std;
int main(){
const int iterations=10000000;
auto start_time=chrono::high_resolution_clock::now();
for (int i=0;i<iterations;++i) {
cout << "Hello, World!" << endl;
}
auto end_time=chrono::high_resolution_clock::now();
auto duration=chrono::duration_cast<chrono::milliseconds>(end_time-start_time);
cout << "Using endl: " << duration.count() << " milliseconds" << endl;
return 0;
}
Using endl: 610727 milliseconds
"\n"을 사용
#include <iostream>
#include <chrono>
using namespace std;
int main(){
const int iterations=10000000;
auto start_time=chrono::high_resolution_clock::now();
for (int i=0;i<iterations;++i) {
cout << "Hello, World!" << "\n";
}
auto end_time=chrono::high_resolution_clock::now();
auto duration=chrono::duration_cast<chrono::milliseconds>(end_time-start_time);
cout << "Using \"\\n\": " << duration.count() << " milliseconds" << endl;
return 0;
}
Using "\n": 595132 milliseconds
결론
약 15.595초 정도 차이로 "\n"이 더 빠르다.
원래 다 예상한 결과겠지만 컴파일러 환경문제 때문에 차이가 많이 없는 것 같다.
하지만 C++을 사용한다면 무조건 빠른 "\n"을 사용하자.
'Language > C++' 카테고리의 다른 글
C, C++ 컴파일러들의 장단점 (0) | 2024.02.23 |
---|---|
int main()과 int main(void)의 차이점은 뭘까? (0) | 2024.01.15 |