나는 Josephus의 순열을 수행하는 코드 작업을하고 있습니다. 리디렉션을 사용하면 cout
또는 printf
을 사용할 때보 다 빠름을 발견했습니다. 나는 코드 성능 및 타이밍에 주로 관심이 있기 때문에 일반적으로 더 빠른 경험을 가진 사람이 누구인지 알고 싶습니다.Convertal Cout을 사용하는 것보다 리디렉션을 사용하여 C++에서 파일로 빨리 인쇄하고 있습니까?
감사합니다.
나는 Josephus의 순열을 수행하는 코드 작업을하고 있습니다. 리디렉션을 사용하면 cout
또는 printf
을 사용할 때보 다 빠름을 발견했습니다. 나는 코드 성능 및 타이밍에 주로 관심이 있기 때문에 일반적으로 더 빠른 경험을 가진 사람이 누구인지 알고 싶습니다.Convertal Cout을 사용하는 것보다 리디렉션을 사용하여 C++에서 파일로 빨리 인쇄하고 있습니까?
감사합니다.
OS에 따라 플랫폼에서 C 및 C++ I/O 라이브러리 (... 및 cpu로드, 서비스, 프로세스, RAM ...)를 구현하는 방식에 따라 다릅니다.
Windows에서는 콘솔에 쓰는 것이 큰 병목입니다. 보통 Linux/MacOS에서 더 빠릅니다 (예 : Performance difference of iostream console output between Windows and OSX?).
ofstream
에 직접 쓰는 것은 cout
과 다른 버퍼링 방식을 사용하면 성능이 향상 될 수 있습니다.
어쨌든 streams
당신이 상당히 std::endl
대신 '\n'
를 사용하여 인쇄 속도를 높일 수 있습니다 :
std::cout << "Test line\n";
보다 빠르다 :
std::cout << "Test line\n" << std::flush;
: 후자 이후
std::cout << "Test line" << std::endl;
은 동등하다
(참조)).
일부 참조 :
@peter, 고마워요. \ n을 사용하면 더 빠르게 만들 수 있었고, 이제는 리눅스와 macOS에서 차이점을 볼 수 있습니다. 사촌 나는 다른 플랫폼에서 해봤지만, 대부분 윈도우로 작동하지만. – user3081810
정의 "빨리", 지연은 ** 콘솔 창에 있기 때문에 ** 당신이 인쇄하고 물건 아마 , 정보가 필요 없으면 아무것도 인쇄하지 않거나'/ dev/nul' /'NUL'에 덤프하십시오. 그것은'std :: ios_base :: sync_with_stdio (false)'가 아직 사용하고 있지 않다면 도움이 될 것이라고 확신했다. ('printf'와'cout'을 섞을 필요가 없다.) – user657267