"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > scanf() 대 cin: C++ 입력에서 어느 것이 더 빠릅니까?

scanf() 대 cin: C++ 입력에서 어느 것이 더 빠릅니까?

2024년 11월 23일에 게시됨
검색:596

scanf() vs. cin: Which is Faster for C   Input?

속도 비교: scanf() 대 cin

질문:

사실인가요 C 프로그램에서 scanf()를 사용하는 것이 다음을 사용하는 것보다 빠릅니다. cin?

답변:

예, 벤치마킹 결과에서 알 수 있듯이 scanf()는 실제로 C의 cin보다 빠릅니다.

테스트에서는 큰 숫자 목록을 읽고 XOR 값을 계산하는 간단한 프로그램이 작성되었습니다. 이 프로그램은 stdio의 scanf()와 iostream의 cin 및 cout을 모두 사용하여 구현되었습니다.

결과:

방법실행 시간
scanf()6.4초
cin 및 cout24.3초

이런 상당한 속도 차이 이는 주로 C의 stdio 기능과 동기화를 유지하는 데 따른 iostream 기능의 오버헤드에 기인합니다.

cin의 성능 최적화:

그러나 std::ios와의 동기화를 비활성화하면 ::sync_with_stdio(false), iostream 버전은 비슷한 수준을 달성할 수 있습니다. 성능:

방법실행 시간
cin 및 cout(sync_with_stdio 사용) (거짓))5.5 초

이러한 최적화를 통해 iostream은 scanf()보다 성능이 뛰어나며 가장 빠른 방법이 됩니다.

결론:

scanf()는 본질적으로 cin보다 빠르지만 C 프로그램에서의 사용은 일반적으로 권장되지 않습니다. 왜냐하면:

  • cin과 달리 유형이 안전하지 않습니다.
  • C 스타일과 C 스타일 코드를 혼합하여 프로그래밍 스타일에 불일치가 발생합니다.
  • iostream은 특히 동기화를 비활성화하여 최적화할 때 입력 및 출력 작업을 위한 보다 현대적이고 효율적인 방법을 제공합니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3