2. 성능측정(원래소스)
1번째 시도 2번째 시도 3번째 시도 4번째 시도 5번째 시도 평균
시간 96.509757 101.61613
3
99.586436 100.46976
9
113.97167
3
102.43075
3
File 1
Lines
2096962 2096962 2096962 2096962 2096962 2096962
File 2
Lines
2097147 2097147 2097147 2097147 2097147 2097147
Fout
lines
4194109 4194109 4194109 4194109 4194109 4194109
3. 과제 성능측정(수정된코드)
1번째 시도 2번째 시
도
3번째 시
도
4번째 시
도
5번째 시
도
평균
시간 55.864585 66.269756 65.854067 64.321649 62.059332 62.873877
8
File 1
Lines
2096962 2096962 2096962 2096962 2096962 2096962
File 2
Lines
2097147 2097147 2097147 2097147 2097147 2097147
Fout
lines
4194109 4194109 4194109 4194109 4194109 4194109
4. 성능 향상 요인
• 원래 있던 소스보다 40초 가량 줄어든 것을 확인 할 수 있다.
• 원래 소스와는 달리 수정된 소스에서는 버퍼사이즈(변수 : BUFF_SIZE 100)
으로 주었다. 버퍼사이즈를 default인 1024보다 적게 주어서 성능향상에
도움이 되었다.
• 배열포인터를 이용하였다. fgetc로 한글자씩 읽은 것을 저장해주고 마지
막에 return 값을 fputs로 저장해주었다.
• gcc 컴파일러는 –O3로 최적화 해주는 옵션이 있는데 gcc –O3 –o merge
merge.c 명령어로 컴파일을 해주었다.
5. 시도했으나, 성능 향상에 실패한 것들
• Open을 이용해 파일을 열어주고 처리해주려 했으나 버퍼를 자르는 부분
에서 특정 Line의 중간에서 끊기는 부분이 있어 성능 향상이 되지 않았던
것 같다. 계속 어떻게 하면 정해준 버퍼 사이즈 내에서 라인의 끝부분까
지 가져오는 것을 연구 하였으나 끝내 해내지 못했다.
• 여러 string reverse 함수를 검색하고 시도해보았지만 눈에 띄게 성능향상
을 찾지는 못하였다.
• Mmap 부분은 open을 하다가 시간을 다 써서 시도해보지 못했다.