10
고고 고고고 고고고고고 고고 1 – Stage 2 고 고고고 고고고 고고고 고고고 line by line 고고… 고 line 고 고고고고… 고고고고고 고고고고고고 20093319 고고고

Make fast file merge program using c (stage 2)

Embed Size (px)

Citation preview

Page 1: Make fast file merge program using c (stage 2)

고급 시스템 프로그래밍

과제 1 – Stage 2

두 파일을 하나의 파일로 합치기line by line 으로…

각 line 을 뒤집어서…국민대학교 컴퓨터공학부

20093319 이동규

Page 2: Make fast file merge program using c (stage 2)

수정 사항 ( 소스 : https://github.com/ledgku/adv-sys-programming/blob/master/merge_reverse_final.c)

1. stat() 을 fstat() 으로 변경2. malloc 예외처리 추가3. merge 할 파일에 사용한 fopen(), fclose(), fread() 를 open(),

close(), read() 로 변경4. setvbuf() 사용하여 파일 출력 버퍼링 사용5. strrev() 의 xor 연산 방식에서 temp 를 사용한 swap 으로 변경6. 최대 file merge size 를 200MB 로 변경

Page 3: Make fast file merge program using c (stage 2)

최종 결과 비교 – 100MB + 100MB

Template Stage 1 Stage 2실행 시간 평균 130.276058 sec 46.400518 sec 34.7356 sec

성능( 최종 버전 ) / (Tem-

plate). 0.356171 0.266631

Page 4: Make fast file merge program using c (stage 2)

수정 사항 - stat() 을 fstat() 으로 변경

Page 5: Make fast file merge program using c (stage 2)

수정 사항 - malloc 예외처리 추가

Page 6: Make fast file merge program using c (stage 2)

수정 사항 - merge 할 파일에 open(), close(), read() 사용

Page 7: Make fast file merge program using c (stage 2)

수정 사항 - setvbuf() 를 사용한 파일 출력 버퍼링

Page 8: Make fast file merge program using c (stage 2)

수정 사항 - strrev() 함수 변경 , merge file max size 를 200MB 로 변경

Page 9: Make fast file merge program using c (stage 2)

시도만 한 것 - openmp

순서대로 두 파일의 라인을 merge 하는 프로그램의 흐름상 반복문에서#pragma omp for 적용은 불가능

strtok_r(…file1…) 과 strtok_r(…file2…) 에 #pragma omp section 적용오히려 성능 저하

Page 10: Make fast file merge program using c (stage 2)

감사합니다 .