[C++] std::endl

2021. 4. 12. 13:07·Language/C C++
반응형
[C++] stdendl

알고리즘 문제를 푸는데 시간초과가 계속 발생했다. 정답 코드를 검색해서 비교해봤을때 내 코드와 다른 부분은 출력부분 뿐이었다. 나는 개행을 std::end를 사용했다.

​x
for (int i = 0; i < N; i++)
    //cout << s[i].name << endl;
    cout << s[i].name << "\n";

이 부분을 \n으로 바꾸니 시간초과 문제를 해결할 수 있었다. for loop를 10만번 반복했을 경우 endl을 사용할 땐 411ms가 걸렸고, \n을 썼을 땐 53ms가 걸렸다. 약 8배 오래 걸렸다. 왜 이런 차이가 발생했을까?

두 가지 모두 개행을 삽입하느 방법이다. 차이점은 endl의 경우 호출 시 출력 버퍼를 flush 하게 된다. 즉 출력 버퍼에 남아있는 데이터를 모두 비우는 동작을 한다.

x
#include <iostream>
using namespace std;
​
int main() {
  for (char i='A'; i <= 'Z'; i++)
  {
    cout << i << endl;
    //cout << i << "\n";
  }
  return 0;
}

위와 같이 각 알파벳을 출력하는 코드를 작성했다. 여기서 endl을 사용할 경우 26번의 flush가 일어난다. 하지만 \n을 사용하면 버퍼에 26글자를 채운 다음 마지막에 flush가 일어나 출력한다.

호출이 적은 경우에는 상관 없겠지만 반복이 많아질 수록 endl을 사용할 경우의 성능을 떨어진다.

 

ref

https://www.educative.io/edpresso/what-is-the-difference-between-endl-and-n-in-cpp

반응형
저작자표시 비영리 변경금지 (새창열림)
'Language/C C++' 카테고리의 다른 글
  • [C/C++] Declaration VS Definition
  • [C++] std::map
  • [C++] 클래스 표준 입출력
  • [C++] Reference(1/2)
덴마크초코우유
덴마크초코우유
IT, 알고리즘, 프로그래밍 언어, 자료구조 등 정리
    반응형
  • 덴마크초코우유
    이것저것끄적
    덴마크초코우유
  • 전체
    오늘
    어제
    • 분류 전체보기 (124)
      • Spring Framework (10)
        • Spring (5)
        • JPA (3)
        • Spring Security (0)
      • Language (51)
        • Java (11)
        • Python (10)
        • JavaScript (5)
        • NUXT (2)
        • C C++ (15)
        • PHP (8)
      • DB (16)
        • MySQL (10)
        • Reids (3)
        • Memcached (2)
      • 개발 (3)
      • 프로젝트 (2)
      • Book (2)
      • PS (15)
        • 기타 (2)
        • 백준 (2)
        • 프로그래머스 (10)
      • 딥러닝 (8)
        • CUDA (0)
        • Pytorch (0)
        • 모델 (0)
        • 컴퓨터 비전 (4)
        • OpenCV (1)
      • 기타 (16)
        • 디자인패턴 (2)
        • UnrealEngine (8)
        • ubuntu (1)
        • node.js (1)
        • 블로그 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Unreal
    select
    알고리즘
    자바
    프로그래머스
    블루프린트
    JS
    memcached
    파이썬
    php
    딥러닝
    C
    redis
    PS
    MySQL
    게임 개발
    JavaScript
    게임
    웹
    NUXT
    Unreal Engine
    map
    클래스
    FPS
    CPP
    Python
    C++
    pytorch
    언리얼엔진4
    mscoco
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
덴마크초코우유
[C++] std::endl
상단으로

티스토리툴바