본문 바로가기

Diary

프로그래밍 언어와 출력 속도 비교

7000만 line의 POS tagged data에서 POS tag를 떼려고 python으로 코드를 짜서 돌리는데

겁~~~~~~~~~~나 느렸다.

너무 느려서 검색해보니까 아래와 같이 재밌는 분석 결과가 있더라


https://www.acmicpc.net/blog/view/57



순위언어출력 방법평균 (초)
1C11fwrite0.4423
2C++17ios_base::sync_with_stdio(false); cout << i << '\n';0.827
3C++17ios_base::sync_with_stdio(false); cout.tie(NULL); cout << i << '\n';0.8272
4C++17printf("%d\n",i);0.8614
5C11printf("%d\n",i);0.9118
6C++17cout << i << '\n';0.9229
7JavaBufferedWriter, bf.write(i + "\n");0.9581
8PyPyfor i in xrange(1,n+1): sys.stdout.write(str(i)+'\n')0.9847
9C++17s += to_string(i) + '\n';를 이용해 문자열 하나로 만든 다음, 마지막에 cout << s << '\n';1.1507
10JavaStringBuilder를 이용해 문자열 하나로 만든 다음, System.out.println(sb);1.1881
11JavaBufferedWriter, bf.write(Integer.toString(i)); bf.newLine();1.2556
12PyPy3for i in range(1,n+1): sys.stdout.write(str(i)+'\n')1.3722
13PyPyprint '\n'.join(map(str,xrange(1,n+1)))1.3738
14PyPysys.stdout.write('\n'.join(map(str,xrange(1,n+1))))1.3772
15PyPyfor i in xrange(1,n+1): print i1.4968
16Python 2print '\n'.join(map(str,xrange(1,n+1)))1.7621
17Python 2sys.stdout.write('\n'.join(map(str,xrange(1,n+1))))1.7658
18JavaPrintWriter1.954
19Python 3print('\n'.join(map(str,range(1,n+1))))2.3312
20Python 3sys.stdout.write('\n'.join(map(str,range(1,n+1))))2.337