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