SlideShare a Scribd company logo
1 of 8
성능 좋은 File merge 프로그램 만들기
컴퓨터공학과
20123391 유선
1. 기존의 merge.c에 Reverse 코드 추가
배열에 읽은 데이터를 저장하여 뒤에서부터
거꾸로 출력함
2. f_out 출력 결과
2. 성능 개선 전의 file merge 수행결과
-> 5번 수행시간의 평균 : 113.766116 sec
4. 성능 개선전 merge.c의 성능 분석 결과
5. 성능 개선을 위해 노력한 것
 파일에 대한 입출력은 상대적으로 많은 시간을 소모함
 모든 입출력 장치는 각 장치 및 OS에 의존하여 최적화된 속도를 낼 수 있는 버퍼의
크기가 있음
 입출력 데이터를 버퍼링하는 함수 계열과 버퍼링을 하지 않는 함수 계열의 두 가지
유형의 함수들이 있음
 f 접두어를 사용하는 함수들은 버퍼처리를 하는 함수 계열
ex) fopen, fclose, fgetc, fputc, fgets, fputs, fread, fwrite 등
 버퍼처리를 하지 않는 함수 계열
ex) open, close, read, write 등
원래의 merge프로그램은 fopen, fclose, fgetc, fputc를 사용하였는데 이것을 open,
close, read, write로 바꾸어서 성능을 개선시키고자 하였다. 그러나 컴파일에는 문
제가 없었는데 파일을 merge하려고 하면 에러가 발생하여 성공시키지 못하였다.
6. 성능 개선을 하려던 코드의 성능분석 결과
7. 성능 분석 결과의 비교
merge.c improve_merge.c
Page-faults 발생횟수 감소
Cpu-cycles가 약 3.18% 감소
Branch-misses가 약 1.4% 감소
-> 미미하지만 약간 성능이 향상됨

More Related Content

What's hot

Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41cosmosyc
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍CHANG-HYUN LEE
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍CHANG-HYUN LEE
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍Seungbeom Shim
 
File merging Report
File merging ReportFile merging Report
File merging ReportKwonhong Min
 
Adv sys prog_20123186_report1
Adv sys prog_20123186_report1Adv sys prog_20123186_report1
Adv sys prog_20123186_report1준석 김
 
Merge.c 성능개선보고서
Merge.c 성능개선보고서Merge.c 성능개선보고서
Merge.c 성능개선보고서Jung Eun Kim
 
우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기Hoyoung Jung
 
고급 시스템 프로그래밍 HW #1
고급 시스템 프로그래밍 HW #1고급 시스템 프로그래밍 HW #1
고급 시스템 프로그래밍 HW #1Leehongki27
 
PlaidCTF 2016 Write-Up [hevc (MISC 50pts)]
PlaidCTF 2016 Write-Up [hevc (MISC 50pts)]PlaidCTF 2016 Write-Up [hevc (MISC 50pts)]
PlaidCTF 2016 Write-Up [hevc (MISC 50pts)]Sehan Lee
 
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기Minchul Jung
 
Ubuntu 8.04 Desktop에서 Elgg설치하기
Ubuntu 8.04 Desktop에서 Elgg설치하기Ubuntu 8.04 Desktop에서 Elgg설치하기
Ubuntu 8.04 Desktop에서 Elgg설치하기sibalmonkeys
 
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)Ubuntu Korea Community
 
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST APIWooyoung Ko
 
AWS EC2 flask_uwsgi_nginx install guide korean
AWS EC2 flask_uwsgi_nginx install guide koreanAWS EC2 flask_uwsgi_nginx install guide korean
AWS EC2 flask_uwsgi_nginx install guide koreanJinsoo Park
 
BSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUp
BSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUpBSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUp
BSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUpSehan Lee
 

What's hot (20)

Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍
 
Merge reversed2
Merge reversed2Merge reversed2
Merge reversed2
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍
 
File merging Report
File merging ReportFile merging Report
File merging Report
 
Adv sys prog_20123186_report1
Adv sys prog_20123186_report1Adv sys prog_20123186_report1
Adv sys prog_20123186_report1
 
프로젝트 #1 최종
프로젝트 #1 최종프로젝트 #1 최종
프로젝트 #1 최종
 
Gfs Kyu
Gfs KyuGfs Kyu
Gfs Kyu
 
Merge.c 성능개선보고서
Merge.c 성능개선보고서Merge.c 성능개선보고서
Merge.c 성능개선보고서
 
우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기
 
Bootchart 송형주
Bootchart 송형주Bootchart 송형주
Bootchart 송형주
 
고급 시스템 프로그래밍 HW #1
고급 시스템 프로그래밍 HW #1고급 시스템 프로그래밍 HW #1
고급 시스템 프로그래밍 HW #1
 
PlaidCTF 2016 Write-Up [hevc (MISC 50pts)]
PlaidCTF 2016 Write-Up [hevc (MISC 50pts)]PlaidCTF 2016 Write-Up [hevc (MISC 50pts)]
PlaidCTF 2016 Write-Up [hevc (MISC 50pts)]
 
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
 
Ubuntu 8.04 Desktop에서 Elgg설치하기
Ubuntu 8.04 Desktop에서 Elgg설치하기Ubuntu 8.04 Desktop에서 Elgg설치하기
Ubuntu 8.04 Desktop에서 Elgg설치하기
 
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
 
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
 
AWS EC2 flask_uwsgi_nginx install guide korean
AWS EC2 flask_uwsgi_nginx install guide koreanAWS EC2 flask_uwsgi_nginx install guide korean
AWS EC2 flask_uwsgi_nginx install guide korean
 
BSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUp
BSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUpBSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUp
BSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUp
 

Similar to Filemerge성능분석

Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10hungrok
 
이무송 스터디 HEX Editor로 PE 분석하기.pptx
이무송 스터디 HEX Editor로 PE 분석하기.pptx이무송 스터디 HEX Editor로 PE 분석하기.pptx
이무송 스터디 HEX Editor로 PE 분석하기.pptxfromitive
 
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개XpressEngine
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱NAVER D2
 
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기Jaeseung Ha
 
Linux Performan tuning Part I
Linux Performan tuning Part ILinux Performan tuning Part I
Linux Performan tuning Part Isprdd
 
속도의 필요성
속도의 필요성속도의 필요성
속도의 필요성민욱 이
 
2014년 02월 XE세미나 About XE 1.7.4
2014년 02월 XE세미나 About XE 1.7.42014년 02월 XE세미나 About XE 1.7.4
2014년 02월 XE세미나 About XE 1.7.4Sol Kim
 
10 동기및비동기장치io
10 동기및비동기장치io10 동기및비동기장치io
10 동기및비동기장치iossuser3fb17c
 
TestDFSIO
TestDFSIOTestDFSIO
TestDFSIOhhyin
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리Seungyong Lee
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발동현 김
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)NAVER D2
 
Spark performance tuning
Spark performance tuningSpark performance tuning
Spark performance tuninghaiteam
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법복연 이
 
XE 오픈 세미나(2014-02-22) - about XE 1.7.4
XE 오픈 세미나(2014-02-22) - about XE 1.7.4XE 오픈 세미나(2014-02-22) - about XE 1.7.4
XE 오픈 세미나(2014-02-22) - about XE 1.7.4XpressEngine
 
어플리케이션 성능 최적화 기법
어플리케이션 성능 최적화 기법어플리케이션 성능 최적화 기법
어플리케이션 성능 최적화 기법Daniel Kim
 
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기XpressEngine
 

Similar to Filemerge성능분석 (20)

Electron forge
Electron forgeElectron forge
Electron forge
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10
 
이무송 스터디 HEX Editor로 PE 분석하기.pptx
이무송 스터디 HEX Editor로 PE 분석하기.pptx이무송 스터디 HEX Editor로 PE 분석하기.pptx
이무송 스터디 HEX Editor로 PE 분석하기.pptx
 
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱
 
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
 
Linux Performan tuning Part I
Linux Performan tuning Part ILinux Performan tuning Part I
Linux Performan tuning Part I
 
속도의 필요성
속도의 필요성속도의 필요성
속도의 필요성
 
2014년 02월 XE세미나 About XE 1.7.4
2014년 02월 XE세미나 About XE 1.7.42014년 02월 XE세미나 About XE 1.7.4
2014년 02월 XE세미나 About XE 1.7.4
 
10 동기및비동기장치io
10 동기및비동기장치io10 동기및비동기장치io
10 동기및비동기장치io
 
TestDFSIO
TestDFSIOTestDFSIO
TestDFSIO
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
 
Spark performance tuning
Spark performance tuningSpark performance tuning
Spark performance tuning
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
 
Oracle History #8
Oracle History #8Oracle History #8
Oracle History #8
 
XE 오픈 세미나(2014-02-22) - about XE 1.7.4
XE 오픈 세미나(2014-02-22) - about XE 1.7.4XE 오픈 세미나(2014-02-22) - about XE 1.7.4
XE 오픈 세미나(2014-02-22) - about XE 1.7.4
 
어플리케이션 성능 최적화 기법
어플리케이션 성능 최적화 기법어플리케이션 성능 최적화 기법
어플리케이션 성능 최적화 기법
 
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
 

Filemerge성능분석

  • 1. 성능 좋은 File merge 프로그램 만들기 컴퓨터공학과 20123391 유선
  • 2. 1. 기존의 merge.c에 Reverse 코드 추가 배열에 읽은 데이터를 저장하여 뒤에서부터 거꾸로 출력함
  • 4. 2. 성능 개선 전의 file merge 수행결과 -> 5번 수행시간의 평균 : 113.766116 sec
  • 5. 4. 성능 개선전 merge.c의 성능 분석 결과
  • 6. 5. 성능 개선을 위해 노력한 것  파일에 대한 입출력은 상대적으로 많은 시간을 소모함  모든 입출력 장치는 각 장치 및 OS에 의존하여 최적화된 속도를 낼 수 있는 버퍼의 크기가 있음  입출력 데이터를 버퍼링하는 함수 계열과 버퍼링을 하지 않는 함수 계열의 두 가지 유형의 함수들이 있음  f 접두어를 사용하는 함수들은 버퍼처리를 하는 함수 계열 ex) fopen, fclose, fgetc, fputc, fgets, fputs, fread, fwrite 등  버퍼처리를 하지 않는 함수 계열 ex) open, close, read, write 등 원래의 merge프로그램은 fopen, fclose, fgetc, fputc를 사용하였는데 이것을 open, close, read, write로 바꾸어서 성능을 개선시키고자 하였다. 그러나 컴파일에는 문 제가 없었는데 파일을 merge하려고 하면 에러가 발생하여 성공시키지 못하였다.
  • 7. 6. 성능 개선을 하려던 코드의 성능분석 결과
  • 8. 7. 성능 분석 결과의 비교 merge.c improve_merge.c Page-faults 발생횟수 감소 Cpu-cycles가 약 3.18% 감소 Branch-misses가 약 1.4% 감소 -> 미미하지만 약간 성능이 향상됨