마음만은 새내기

항상 초심을 잃지 않고 생활하겠습니다~!

프로그래밍

각 언어별 성능 테스트!! : 2. (기본 언어) 출력 성능 편

동동매니저 2019. 8. 22. 13:09
안녕하세요~!
지난 글에 이어서, 언어별 성능 테스트에 관한 글을 올려요~!

[관련 글]

(지난번에 입력 테스트였다면... 이번에는 출력 테스트겠죠?)

★ 출력 성능 테스트
※ 테스트 방법 : 1~N까지의 수를 각 줄에 순서대로 출력, N=1000만
※ 테스트 언어 : C, C++, Java, Python 3, Pascal
※ 테스트 결과 (언어, 출력 방법, 평균 시간 순)

1위!!!
언어 : C
입력 방법 : fwrite
평균 시간 : 270.0 ms
참고 사항 : printf를 통한 줄력보다 코드가 복잡함.

2위!!
언어 : C++
출력 방법 : 코드 초반에 ios_base::sync_with_stdio(false); 코드를 추가한 후, std::cout<<i<<'\n';을 사용
평균 시간 : 457.0 ms
참고 사항 : std::endl보다 직접 줄 바꿈 문자를 추가하는 것이 더 빠름

3위!
언어 : C
출력 방법 : printf("%d\n",i);
평균 시간 : 510.1 ms
참고 사항 : C언어의 가장 기본적인 출력 방법

4위.
언어 : C++
출력 방법 : std::cout<<i<<'\n';
평균 시간 : 519.1 ms
참고 사항 : C++의 기본적인 출력 방법, 직접 줄 바꿈 문자를 추가

5위.
언어 : Java
출력 방법 : BufferedWriter, bw.write(i+"\n");
평균 시간 : 529.2 ms
참고 사항 : 예외 처리 구문 필수!!

6위.
언어 : Pascal
출력 방법 : WRITELN
평균 시간 : 698.4 ms
참고 사항 : Pascal 언어가 생소할 수 있음. (실제로 BOJ에서 실행해보면...)

7위.
언어 : Java
출력 방법 : PrintWriter
평균 시간 : 722.1 ms
참고 사항 : 표준 출력 스트림(System.out)으로 바로 초기화 가능, 예외 처리 필수!!

8위.
언어 : Python 3
출력 방법 : for i in range(1,n+1): sys.stdout.write(str(i)+'\n')
평균 시간 : 5409.1 ms
참고 사항 : 갑자기 시간이 급상승... (Python?!)

9위.
언어 : Python 3
출력 방법 : for i in range(1,n+1): print(i)
평균 시간 : 6315.7 ms
참고 사항 : Python 3의 기본적인 출력인데... 확실히 느림.

10위.
언어 : C++
출력 방법 : 코드 초반에 ios_base::sync_with_stdio(false); 코드를 추가한 후, std::cout<<i<<std::endl;을 사용;
평균 시간 : 11422.3 ms
참고 사항 : std::endl이 확실히 느린 것을 확인할 수 있었음.

11위.
언어 : C++
출력 방법 : cout<<i<<endl;
평균 시간 : 12773.9 ms
참고 사항 : 코드 한 줄로 인한 약간(?)의 시간차...

12위.
언어 : Java
출력 방법 : System.out.print(i+"\n");
평균 시간 : 14568.8 ms

13위.
언어 : Java
출력 방법 : System.out.println(i);
평균 시간 : 34036.1 ms
참고 사항 : Java의 기본적인 출력방법... 이지만 출력량이 많다면...??

14위.
언어 : Java
출력 방법 : System.out.printf("%d\n",i);
평균 시간 : 35604.3 ms
참고 사항 : Java에도 printf가 있음.

출력 파일의 크기가 약 75MB로 입력 테스트에 사용한 파일보다는 작지만,
언어나 출력 방법에 따라 성능에 큰 차이가 있었던 것 같았어요...

조만간 정렬, 연산(소수 구하기) 등 결과가 나오면 포스팅 해드릴게요~!
그럼 20000~!