250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 샐러리
- 영국
- 서버
- 인프라
- 계획
- #DB#SQLD#자격증
- 유럽
- 일정
- 여행
- JAVA #객체지향 #프로그래밍 #언어 #IT #기초
- 여행 #
- 리눅스
- 추억
- ip
- 내심정
- IT
- 겨울
- 파이썬
- 경험
- 메시지 큐
- 1달살기
- 실비용
- 예약
- RabbitMQ
- 유럽여행
- 준비
- JAVA #언어 #프로그래밍 #IT #개발 #코딩
- 배낭여행
- JAVA #언어 #프로그래밍 #코딩 #static #정적함수 #정적변수 #클래스
- 이탈리아
Archives
- Today
- Total
YoonWould!!
cout,cin컴파일 속도 높이기(시간초과 해결법) 본문
728x90
문제를 푸실 때 printf,scanf를 사용했을 때 A/C를 받았지만 cout,cin을 사용했을 때 시간초과가 나는 경우가 있습니다. 이는 cout,cin이 printf,scanf보다 컴파일 속도가 느리기 때문에 발생합니다. 평소에는 시간 차이가 별로 없지만 입력이나 출력이 몇십만 정도로 많아지면 시간이 크게 차이나게 됩니다. 따라서 이부분을 유의하여 코드를 작성하려면 cout,cin 대신 printf,scanf를 사용하시는 것을 권장하지만 cout,cin을 계속 사용하고 싶은 분들이라면 꼭 아래 방법을 이용하시는 것을 권장합니다. 아래 코드는 cout,cin의 성능을 printf,scanf만큼 빠르게 만들어주는 역할을 합니다.
1.ios::sync_with_stdio(false);
ios::sync_with_stdio는 cpp의 iostream을 c의 stdio와 동기화시켜주는 역할을 합니다. 이는 iostream, stdio의 버퍼를 모두 사용하기 때문에 딜레이가 발생하게 됩니다. ios::sync_with_stdio(false)는 이 동기화 부분을 끊는 함수입니다. 이를 사용하면 c++만의 독립적인 버퍼를 생성하게 되고 c의 버퍼들과는 병행하여 사용할 수 없게 됩니다. 대신 사용하는 버퍼의 수가 줄어들었기 때문에 속도는 높아지게 됩니다.
- 그러나 untie의 경우엔 cout으로부터 cin을 untie해주기 때문에 먼저 입력부터 하게 됩니다.
- 그러나 "hi"는 보이지 않는데, cout은 디폴트에서는 출력명령을 내리거나 버퍼가 가득찼을 경우에만 flushed되고 출력되기 때문입니다.
따라서 cin을 cout에서 untie하고 싶다면 cin으로 입력하기 전에 cout으로 출력을 할 때마다 지속적으로 flush를 해줘야 합니다.
출처 : http://codecollector.tistory.com/381
728x90
'<프로그래밍> > C++' 카테고리의 다른 글
[C++] memset 함수 (0) | 2022.11.18 |
---|---|
[C언어]자료형과 포인터 (0) | 2018.06.21 |
scanf(“%1d”,&num) 정수 1자리씩 입력 받기 (0) | 2018.04.09 |
디폴트는 cout,cin이 tie되어 있습니다.
만약 cout << "hi"; cin >> name; 이 순서라면 디폴트의 경우 "hi"가 먼저 출력되고 name을 입력할 것입니다.