> 백엔드 개발 > C++ > C IOStream 성능은 실제로 printf/scanf보다 느립니까?

C IOStream 성능은 실제로 printf/scanf보다 느립니까?

Barbara Streisand
풀어 주다: 2024-11-07 00:57:02
원래의
957명이 탐색했습니다.

Is C   IOStream Performance Actually Slower Than printf/scanf?

C에서 IOStream 성능을 최적화하는 방법

C 사용자는 후자의 인터페이스에도 불구하고 C IOStream보다 printf/scanf 기능 계열을 선호하는 경우가 많습니다. 장점. 성능 문제가 이러한 선호의 주요 원인으로 종종 인용됩니다.

버퍼링

기본 streambuf의 버퍼 크기를 늘리면 HDD 적중 횟수 및 시스템을 줄여 성능을 크게 향상시킬 수 있습니다. 전화. 이는 다음을 통해 수행됩니다.

char Buffer[N];
std::ifstream file("file.txt");
file.rdbuf()->pubsetbuf(Buffer, N);
로그인 후 복사

로캘 처리

로캘은 문자 변환, 필터링 및 동적 디스패치로 인해 성능 오버헤드를 초래할 수 있습니다. 이러한 작업을 비활성화하는 기본 C 로캘로 로캘을 설정하면 성능이 향상될 수 있습니다.

std::locale::global(std::locale("C"));
로그인 후 복사

동기화

C stdio(std::ios_base: :sync_with_stdio(false))는 눈에 띄는 성능 이점을 제공하지 않습니다.

측정

다양한 컴파일러와 플랫폼을 사용하여 벤치마킹하면 다양한 결과가 나타납니다.

  • SUSE 10p3의 g 3.4.2: C의 경우 ~20% 속도 저하
  • Ubuntu 11.10의 g 4.7.2: C 25% 더 빠름
  • Ubuntu Linux 10.10의 g 4.4.5: C 17% 더 빠르게
  • macOS X에서 g: C 111% 더 느림
  • Kubuntu 16.04에서 clang 3.8.0: C 66% 더 빠르게

이러한 결과는 IOStream 성능이 향상되었음을 나타냅니다. 특정 구현 구현에 따라 다릅니다. 따라서 플랫폼 전반에 걸쳐 IOStream을 최적화할 수 있는 보편적인 솔루션은 없습니다.

위 내용은 C IOStream 성능은 실제로 printf/scanf보다 느립니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿