Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

cout <
<시간/>

이 섹션에서 우리는 C++에서 cout <

따라서 콘솔이나 파일에 줄을 인쇄하는 동안 std::endl을 피해야 하는 이유는 무엇입니까? 현재 줄 다음에 줄 바꿈을 만들기 위해 std::endl을 사용합니다. 몇 줄의 IO 작업에서는 문제가 되지 않습니다. 그러나 대량의 IO 작업의 경우 성능이 저하됩니다.

endl은 새 줄을 만드는 데 사용되지만 새 줄에만 보내지는 않습니다. 커서를 다음 줄로 보낸 후 매번 버퍼를 플러시합니다.

버퍼를 비우는 것은 프로그래머의 작업이 아닙니다. 운영 체제가 이에 대한 책임이 있습니다. 플러시를 요청할 때마다 운영 체제에 요청합니다. 이 요청은 비교적 비용이 많이 듭니다. 그리고 몇 줄을 작성한 후 매번 버퍼를 플러시할 필요가 없습니다. IO 스트림은 버퍼가 가득 차면 자동으로 버퍼를 지웁니다.

std::endl을 사용하여 파일에 거의 100000줄의 텍스트를 작성하는 데 필요한 시간을 분석하고 '\n'을 사용하여 차이를 쉽게 알 수 있습니다. std::endl을 사용하는 코드는 뒤에 '\n'을 사용하는 것보다 작업을 완료하는 데 거의 두 배나 더 걸립니다.