endl 과 \n 속도 차이 확인 중 질문
370
작성한 질문수 2
const int MILLS = 1000000;
int main()
{
DWORD dwStart1 = GetTickCount();
for (int i = 0; i <= MILLS; ++i)
cout << "h" << '\n';
DWORD dwEnd1 = GetTickCount();
DWORD dwStart2 = GetTickCount();
for (int i = 0; i <= MILLS; ++i)
cout << "h\n";
DWORD dwEnd2 = GetTickCount();
DWORD dwStart3 = GetTickCount();
for (int i = 0; i <= MILLS; ++i)
cout << "h" << endl;
DWORD dwEnd3 = GetTickCount();
cout << dwStart1 << ' ' << dwEnd1 << ' ' << dwEnd1 - dwStart1 << '\n';
cout << dwStart2 << ' ' << dwEnd2 << ' ' << dwEnd2 - dwStart2 << '\n';
cout << dwStart3 << ' ' << dwEnd3 << ' ' << dwEnd3 - dwStart3 << '\n';
}
갑자기 궁금해서 endl 이랑 \n 속도 차이 확인해보고자 어셈블리어 확인하고 결과 값도 확인했습니다. 2번 결과가 왜 빠른지는 어셈블리어 확인하면서 << 연산자 때문이라는 것도 알았습니다.
최종적으로 1번과 3번이 큰 차이는 안나지만 대체로 1번이 더 느리던데 왜 그런가요? 검색해본 결과는 flush 차이로 \n이 더 빠르다고 하지만 반대의 결과가 나와서 궁금합니다. (어셈블리어로 확인해보려 했으나 ??로 채워진 부분도 있어 알아보기 어렵고 같은 for문에서도 어셈블리어가 다르게 적용 돼 있습니다.


답변 1
0
이쪽 부분은 어셈의 영역이 아닌 cout 자체의 문제라서 어셈으로 봐도 알기가 어렵습니다.
그리고 사실 저도 알지 못하고 + 생각해본 적이 없는 문제라, 정확한 답변을 드리기 힘들 것 같네요.
(stackoverflow 형님들이라면 알 수도 있지 않을까요?)
visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.
0
546
1
정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?
0
445
1
strcpy() 구현 관련 질문
0
519
1
빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?
0
461
1
클래스 타입의 포인터 질문합니다
0
550
1
입력값을 enum 값에 넣어주는거 이제 막혔나요?
0
501
1
템플릿 특수화 관련 질문
0
387
1
포인터 관련 질문합니다!
0
267
1
Unable to start assembler. Check your settings.
0
840
2
cpu선택
0
543
1
포인터 질문이 있습니다
0
330
1
20:35 에서 구조체 크기에 대한 질문입니다!
0
588
1
iterator 삭제관련
0
410
1
함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!
0
315
1
15 분 45초 대 질문
0
312
0
스택 프레임 질문합니다!
2
309
1
오른값 참조 in 게임
0
387
0
동적할당 질문이 있습니다
0
452
1
안녕하세요 메모리에 대해 질문드립니다.
0
309
1
함수객체 의 매개변수
0
365
1
복사생성자
0
439
1
main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요
0
426
1
포인터 실습 강의를 보고 궁금한게 있습니다.
0
358
1
스택 오버플로우
2
794
1





