"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C ++ ioStream 성능이 printf/scanf보다 실제로 느리게됩니까?

C ++ ioStream 성능이 printf/scanf보다 실제로 느리게됩니까?

2025-04-13에 게시되었습니다
검색:481

Is C   IOStream Performance Actually Slower Than printf/scanf?

버퍼링

는 HDD 히트 및 시스템 호출을 줄임으로써 성능을 크게 향상시킬 수 있습니다.

char buffer [n]; std :: ifstream file ( "file.txt"); file.rdbuf ()-> pubsetbuf (buffer, n);

로케일 처리

char Buffer[N];
std::ifstream file("file.txt");
file.rdbuf()->pubsetbuf(Buffer, N);
로컬은 문자 변환, 필터링 및 동적 파견으로 인해 성능 오버 헤드를 소개 할 수 있습니다. 이러한 작업을 비활성화하는 기본 C 로케일로 로케일을 설정하면 성능을 향상시킬 수 있습니다. (std :: ios_base :: sync_with_stdio (false))는 관찰 가능한 성능 이점을 제공하지 않습니다.

측정

char Buffer[N];
std::ifstream file("file.txt");
file.rdbuf()->pubsetbuf(Buffer, N);

벤치마킹은 다양한 결과를 드러냅니다. g 3.2.

G 4.7.2에서 Ubuntu 11.10 : C 25% 더 빠른

G 4.4.5에서 Ubuntu Linux 10.10 : C 17% 더 빠른 g on macos x : c 111% 더 느린

clang 3.8.0 kubuntu 16.04 : Couc 66%. 더 빠른

  • 이 결과는 ioStream 성능 향상이 특정 구현 구현에 따라 다르다는 것을 나타냅니다. 따라서 플랫폼에서 iOStream을 최적화하는 보편적 인 솔루션은 없습니다.
최신 튜토리얼 더>

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

Copyright© 2022 湘ICP备2022001581号-3