관리 메뉴

Storage Gonie

(20) C++ 입/출력속도 높이기 본문

알고리즘/문제해결을 위한 C++ 공부

(20) C++ 입/출력속도 높이기

Storage Gonie 2019. 5. 8. 10:57
반응형

*아래의 방법을 사용해야 하는 경우는 보통 입출력이 100만개 이상일 때 이다.

 

1. cin, cout은 scanf, printf보다 속도가 많이 느린데. 아래의 3줄을 추가해 주면 입/출력 속도를 scanf, printf급으로 올릴 수 있다.
   단, sync_with_stdio(false)를 사용할 때는 (scanf, printf)와 (cin, cout)을 썪어서 사용하지 말아야한다.
   그 이유는 멀티 쓰레드 환경일 경우 sync를 false시켜주면  Thread unsafe해지기 때문에 예상치 못한 순서의 출력이 이뤄질 수 있기 때문.
   이와 같은 이유로 또한 sync_with_stdio(false)를 사용할 때는 싱글 쓰레드 환경어야야 한다.(PS는 대부분 싱글 쓰레드 환경)
   임시방편의 방법이므로 실무에서는 사용하면 안된다.
   어떤 때는 이 방법이 통하지 않는 경우가 있으므로 scanf와 printf만을 사용하여 해결해 볼 수 있다.

//cin, cout을 사용하기전 아래의 3줄을 추가해주자.
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);

int a;
cin >> a;
cout << a;

 

2. endl보다는 ''\n"을 사용하자. 이것의 속도가 훨씬 빠르기 때문이다.

 

 

https://eine.tistory.com/entry/CC-%EC%9E%85%EC%B6%9C%EB%A0%A5-%EB%B0%A9%EB%B2%95%EC%97%90-%EB%94%B0%EB%A5%B8-%EC%86%8D%EB%8F%84-%EC%A0%95%EB%A6%AC

반응형
Comments