3. Merge.c
2개의 file을 읽어 line by line으로 reverse 한 후
1 line씩 교차하여 1개의 file로 merge하는 프로그램
4. 기존 코드 성능 측정 결과
1차 : 75.49s
2차 : 75.73s
3차 : 78.08s
4차 : 68.52s
5차 : 77.30s
Average : 75.02s
5. 개선된 코드 성능 측정 결과
1차 : 7.16s
2차 : 10.65s
3차 : 9.36s
4차 : 9.83s
5차 : 9.55s
Average : 9.31s
6. 성능 측정 결과 비교
기존 코드보다 약 8.06배 빨라졌다.
성능 = Improved / Original
= 0.12
7. 성능 개선 방법 1
기존 한 글자씩 읽던
file I/O 함수들(fopen, fgetc, fputc)을
open, read, write 함수로 바꾸고
input/output file size의 배열을 할당하고
1번씩의 system call만을 사용하여 file을
read/write 한다.
8. 성능 개선 방법 2
읽어온 file을 line by line으로
reverse와 동시에 merge 하여 배열에 저장한다.
9. 성능 개선 방법 3
병렬화를 쉽게 해주는 OpenMP library를 사용한다.
Line by line으로 reverse & merge를 수행할 때
앞, 뒤 구간을 나눠 multi-threading 한다.
10. 새로 개선된 사항
1. File I/O, Memory allocation 시의 exception handling
2. 이해하기 어려운 goto문 제거
3. Function, section에 맞는 주석 추가
4. 전역변수 제거
5. 일관성 있는 코드 스타일로 수정
6. 2개의 Input file의 크기가 달라도 가능하도록 수정