2. 기존 코드 성능측정 결과
총 5회 측정 결과
1회 : 75.82s
2회 : 68.40s
3회 : 70.03s
4회 : 73.14s
5회 : 75.81s
평균 : 72.64s
3. 개선된 코드 성능측정 결과
총 5회 측정 결과
1회 : 11.45s
2회 : 11.18s
3회 : 10.93s
4회 : 10.75s
5회 : 12.03s
평균 : 11.27s
4. 성능측정 결과 비교
기존 코드보다 평균 약 6.45배 빨라졌다.
성능 = Improved / Origin
= 0.16
5. 개선1. String Reverse & Save Function
각 file의 line 별로 한번씩
‘reverse와 동시에 새로운 배열에 저장’한다.
6. 개선2. open() & read() & write() 사용
기존 file I/O 함수들(fopen, fgetc, fputc)을
open() & read() & write() 함수들로 바꾼다.
Heap 영역에 filesize 만큼의 배열을 할당하고 각 file을 ‘한번의
system call’만을 하여 읽는다.
마찬가지로 결과값도 filesize*2만큼의 배열을 할당하여 ‘한번의
system call’만을 하여 쓴다.
8. 실패한 시도 1
현재의 코드는 각 라인을 reverse 할 때 2개의 thread로 나눠서 실행한다.
HW가 4개의 core를 가지고 있으므로 4개의 thread로 나눠서 실행해 봤지만
각 line의 길이가 짧아 multithread로 얻는 이득보다 overhead가 더 커졌다.
평균 20.59s로 약 1.9배 느리다.