반응형

 

C언어에서 출력을 할 때 개행을 하기위해 endl와 "\n"를 사용합니다.

endl의 경우 flush() 함수를 겸하기 때문에 실행마다 출력 버퍼를 지워주는 과정(flush)이 생겨 "\n" 보다 확실이 속도가 느립니다. 

 

<코드>

#include<iostream>
#include<time.h>
using namespace std;

int main()
{
	clock_t start, end;
	double time1, time2, time3, time4;

	start = clock(); //시간 측정 시작

	// #time1 "cout << i << endl;"
	for (int i = 0; i < 10000; i++)
	{
		cout << i << endl;
	}

	end = clock(); //시간 측정 끝
	time1 = end - start;


	// #time2 "cout << i << "\n";"
	start = clock(); //시간 측정 시작

	for (int i = 0; i < 10000; i++)
	{
		cout << i << '\n';
	}

	end = clock(); //시간 측정 끝
	time2 = end - start;


	// #time3 "printf("%d\n", i);"
	start = clock(); //시간 측정 시작

	for (int i = 0; i < 10000; i++)
	{
		printf("%d\n", i);
	}

	end = clock(); //시간 측정 끝
	time3 = end - start;

	printf("\n\n");
	cout << "cout << i << endl : " << time1 << "ms" << endl;
	cout << "cout << i << '\\n' : " << time2 << "ms" << endl;
	cout << "printf(\"%d\\n\", i) : " << time3 << "ms" << endl;
}

 

성능면에서

cout << endl 보다는 cout <<"\n" 가,

cout << "\n"보다는 prinft("%d\n") 가 더 빠른것을 알 수 있습니다.

실제로 속도를 측정하니 앞으로는 prinf() 를 더 자주 써야겠다는 생각이 들었습니다.

반응형

+ Recent posts