두 통화는 성능과 관련이없는 다른 의미를 갖습니다. 사실 은 실행 시간을 속도는 (또는 수 있습니다 단지 부작용). 각각의 기능을 이해하고 최적화 된 것처럼 보이기 때문에 모든 프로그램에 맹목적으로 포함해서는 안됩니다.
ios_base::sync_with_stdio(false);
C 및 C ++ 표준 스트림 간의 동기화를 비활성화합니다. 기본적으로 모든 표준 스트림이 동기화되므로 실제로 C 및 C ++ 스타일 I / O를 혼합하고 합리적인 결과를 얻을 수 있습니다. 동기화를 비활성화하면 C ++ 스트림에 자체 독립 버퍼가있어 C 및 C ++ 스타일 I / O를 혼합하는 것이 어려워집니다.
또한 동기화 된 C ++ 스트림은 스레드로부터 안전합니다 (다른 스레드의 출력이 인터리브 될 수 있지만 데이터 경쟁이 발생하지 않음).
cin.tie(NULL);
이것은 cin
에서 연결 cout
됩니다. 묶인 스트림은 한 스트림이 다른 스트림에서 각 I / O 작업 전에 자동으로 플러시되도록합니다.
기본적 으로 합리적인 사용자 상호 작용을 보장하기 위해 cin
연결되어 cout
있습니다. 예를 들면 다음과 같습니다.
std::cout << "Enter name:";
std::cin >> name;
cin
와 cout
묶여 있으면 프로그램이 사용자에게 입력을 요청하기 전에 출력이 플러시 (예 : 콘솔에 표시) 될 수 있습니다. 스트림을 풀면 프로그램은 사용자가 자신의 이름을 입력하기를 기다리는 것을 차단할 수 있지만 "이름 입력"메시지는 아직 보이지 않습니다 ( cout
기본적으로 버퍼링 되므로 출력은 요청시 또는 콘솔에서 플러시 / 표시됩니다). 버퍼가 가득 찼습니다).
그래서 당신은 풀고 경우 cin
에서 cout
, 당신은 확인해야 플러시 cout
수동에 입력을 기대하기 전에 뭔가를 표시 할 때마다 cin
.
결론적으로, 각각의 기능을 이해하고 결과를 이해 한 다음 속도 개선 의 가능한 부작용을 원하는지 여부를 결정하십시오 .