코드 시간 단축

dldzm·2021년 2월 2일
0
cin.tie(NULL);
ios_base::sync_with_stdio(false);

C++로 알고리즘을 풀 때 실행 속도를 높이기 위해 다음과 같은 구문을 작성해준다.

두둥탁. 알고리즘 블로그를 찾아보면서 반복적으로 나오는 코드여서 뭔가 하고 찾아보게 되었다.

ios_base::sync_with_stdio(false);

이것의 장점은 동기화를 비활성해줘서 c++의 독립적인 버퍼가 생성된다. 사용하는 버퍼의 수는 줄어들지만 실행 속도는 빨라진다.
하지만 멀티 쓰레드 환경에서는 출력 순서를 보장할 수 없다. C 함수를 함께 사용하지 않으면 될 것 같다.

cin.tie(NULL);

cincout의 묶음으로 풀어주는 것인데 IO 작업을 진행하기 전에 자동으로 버퍼를 비워줌을 보장한다. 알고리즘을 풀 때는 화면에 바로 보이는 것이 중요하지 않기 때문에 묶음을 풀어주는 것이 좋다.

추가로 c++에서 endl으로 개행하는데 이렇지 말고 알고리즘의 실행 속도를 높이기 위해 \n을 통해 개행하는 것이 좋다.

알고리즘 실력을 올리는 것보다 이런거 알아서 조금이라도 속도 높이는게 재밌을 나이, 23살..

다음은 참고 stack overflow 링크 : https://stackoverflow.com/questions/31162367/significance-of-ios-basesync-with-stdiofalse-cin-tienull
참고 백준 링크 : https://www.acmicpc.net/board/view/22716

profile
🛰️ 2021 fall ~

0개의 댓글