SlideShare a Scribd company logo
1 of 12
고급 시스템 프로그래밍
과제 1
두 파일을 하나의 파일로 합치기
line by line으로…
각 line을 뒤집어서…
국민대학교 컴퓨터공학부
20093319 이동규
시작하기 앞서…
쉘 스크립트로 만들자!
run.sh
파라미터 3개 필요
실행 파일명, 출력 파일명, 실행 반복 횟수
EXECUTABLE_FILE OUTPUT_FILE
REPEAT_COUNT
최종 결과 비교 – 100MB + 100MB
Template 최종 버전
실행 시간 평균 130.276058 sec 46.400518 sec
성능
(최종 버전) / (Template)
0.356171
성능을 올리기 위해 한 일들…
1. 동적할당
- 한 파일당 100MB까지 테스트 완료.
- 100MB 이상도 가능하지만 코드에서는 최대 100MB로 제한
- Merge 할 파일의 파일 크기를 읽어서 크기만큼 동적 할당
2. XOR 연산자를 이용한 문자열 뒤집기 함수
3. strtok_r()로 문자열 파싱
- fread()로 파일의 모든 내용을 동적할당한 메모리로 이동
- ‘n’으로 문자열 파싱
성능을 올리기 위해 한 일들 - 동적할당
성능을 올리기 위해 한 일들 - XOR 연산자를 이용한 문자열 뒤집기 함수
성능을 올리기 위해 한 일들 – strtok_r()로 문자열 파싱
실패한 것들…
- fgetc()로 ‘n’이 나올때 까지 읽어서 버퍼에 저장, ‘n’이 나오면 fputs()로
파일 출력 (Template에 비해 시간은 조금 단축되었다.)
변경 파일Template
실패한 것들…
- fgetc(), fputc()를 read(), write()로 변경하여 동일한 기능을 하도록 변경하였
다. (실행시간이 대략 6배 늘어났다.)
변경 파일Template
실패에서 얻은 교훈
I/O에 접근하는 건 비용이 너무 크다.
최소한으로 접근하자!
감사합니다.

More Related Content

What's hot

고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍CHANG-HYUN LEE
 
Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41cosmosyc
 
취약점 점검도구 실습 보고서
취약점 점검도구 실습 보고서 취약점 점검도구 실습 보고서
취약점 점검도구 실습 보고서 Dong-Jin Park
 
Adv sys prog_20123186_report1
Adv sys prog_20123186_report1Adv sys prog_20123186_report1
Adv sys prog_20123186_report1준석 김
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍CHANG-HYUN LEE
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍CHANG-HYUN LEE
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍Seungbeom Shim
 
고급 시스템 프로그래밍 HW #1
고급 시스템 프로그래밍 HW #1고급 시스템 프로그래밍 HW #1
고급 시스템 프로그래밍 HW #1Leehongki27
 
File merging Report
File merging ReportFile merging Report
File merging ReportKwonhong Min
 
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)Ubuntu Korea Community
 
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
 
Merge.c 성능개선보고서
Merge.c 성능개선보고서Merge.c 성능개선보고서
Merge.c 성능개선보고서Jung Eun Kim
 
Ubuntu 8.04 Desktop에서 Elgg설치하기
Ubuntu 8.04 Desktop에서 Elgg설치하기Ubuntu 8.04 Desktop에서 Elgg설치하기
Ubuntu 8.04 Desktop에서 Elgg설치하기sibalmonkeys
 
Kubuntu 9.10에 Cubrid 8.2.0.2005 Linux
Kubuntu 9.10에 Cubrid 8.2.0.2005 LinuxKubuntu 9.10에 Cubrid 8.2.0.2005 Linux
Kubuntu 9.10에 Cubrid 8.2.0.2005 Linuxphpkorea
 
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
 
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기Minchul Jung
 

What's hot (20)

고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍
 
Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41
 
취약점 점검도구 실습 보고서
취약점 점검도구 실습 보고서 취약점 점검도구 실습 보고서
취약점 점검도구 실습 보고서
 
Adv sys prog_20123186_report1
Adv sys prog_20123186_report1Adv sys prog_20123186_report1
Adv sys prog_20123186_report1
 
프로젝트 #1 최종
프로젝트 #1 최종프로젝트 #1 최종
프로젝트 #1 최종
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍
 
고급 시스템 프로그래밍 HW #1
고급 시스템 프로그래밍 HW #1고급 시스템 프로그래밍 HW #1
고급 시스템 프로그래밍 HW #1
 
Gfs Kyu
Gfs KyuGfs Kyu
Gfs Kyu
 
File merging Report
File merging ReportFile merging Report
File merging Report
 
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
 
Bootchart 송형주
Bootchart 송형주Bootchart 송형주
Bootchart 송형주
 
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)]
 
Ddd
DddDdd
Ddd
 
Merge.c 성능개선보고서
Merge.c 성능개선보고서Merge.c 성능개선보고서
Merge.c 성능개선보고서
 
Ubuntu 8.04 Desktop에서 Elgg설치하기
Ubuntu 8.04 Desktop에서 Elgg설치하기Ubuntu 8.04 Desktop에서 Elgg설치하기
Ubuntu 8.04 Desktop에서 Elgg설치하기
 
Kubuntu 9.10에 Cubrid 8.2.0.2005 Linux
Kubuntu 9.10에 Cubrid 8.2.0.2005 LinuxKubuntu 9.10에 Cubrid 8.2.0.2005 Linux
Kubuntu 9.10에 Cubrid 8.2.0.2005 Linux
 
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
 
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
 

Viewers also liked

Hw1 2 20113288_소현수
Hw1 2 20113288_소현수Hw1 2 20113288_소현수
Hw1 2 20113288_소현수hyunsoo so
 
Eva rc task2_module 4_thinking routines
Eva rc task2_module 4_thinking routinesEva rc task2_module 4_thinking routines
Eva rc task2_module 4_thinking routinesEva R
 
コラムー笑止の野合
コラムー笑止の野合コラムー笑止の野合
コラムー笑止の野合徹 長谷川
 
Hipervinculos , tipos de diarrea
Hipervinculos , tipos de diarreaHipervinculos , tipos de diarrea
Hipervinculos , tipos de diarreavanessa cotrina
 
Enbe final project brief (1)
Enbe final project brief (1)Enbe final project brief (1)
Enbe final project brief (1)isaack muja
 
Module 2 cooperative learning monica rojo
Module 2 cooperative learning monica rojoModule 2 cooperative learning monica rojo
Module 2 cooperative learning monica rojomonicarojo
 
Eva rc module 2_activity_kwl
Eva rc module 2_activity_kwlEva rc module 2_activity_kwl
Eva rc module 2_activity_kwlEva R
 
Tema 4 La Baja Edad Media. Crisis siglos XIV y XV.
Tema 4 La Baja Edad Media. Crisis siglos XIV y XV.Tema 4 La Baja Edad Media. Crisis siglos XIV y XV.
Tema 4 La Baja Edad Media. Crisis siglos XIV y XV.Teresa Pérez
 
Vitrine 05/2016 Tupperware Essencial
Vitrine 05/2016 Tupperware EssencialVitrine 05/2016 Tupperware Essencial
Vitrine 05/2016 Tupperware EssencialTUPPERWARE ESSENCIAL
 

Viewers also liked (17)

Hw1 2 20113288_소현수
Hw1 2 20113288_소현수Hw1 2 20113288_소현수
Hw1 2 20113288_소현수
 
Mini journal 1
Mini journal 1Mini journal 1
Mini journal 1
 
Eva rc task2_module 4_thinking routines
Eva rc task2_module 4_thinking routinesEva rc task2_module 4_thinking routines
Eva rc task2_module 4_thinking routines
 
コラムー笑止の野合
コラムー笑止の野合コラムー笑止の野合
コラムー笑止の野合
 
Presentation
PresentationPresentation
Presentation
 
Hipervinculos , tipos de diarrea
Hipervinculos , tipos de diarreaHipervinculos , tipos de diarrea
Hipervinculos , tipos de diarrea
 
Enbe final project brief (1)
Enbe final project brief (1)Enbe final project brief (1)
Enbe final project brief (1)
 
Module 2 cooperative learning monica rojo
Module 2 cooperative learning monica rojoModule 2 cooperative learning monica rojo
Module 2 cooperative learning monica rojo
 
VP 11 2016
VP 11 2016VP 11 2016
VP 11 2016
 
Eva rc module 2_activity_kwl
Eva rc module 2_activity_kwlEva rc module 2_activity_kwl
Eva rc module 2_activity_kwl
 
VP13.2015 Tupperware Essencial
VP13.2015 Tupperware EssencialVP13.2015 Tupperware Essencial
VP13.2015 Tupperware Essencial
 
Tema 4 La Baja Edad Media. Crisis siglos XIV y XV.
Tema 4 La Baja Edad Media. Crisis siglos XIV y XV.Tema 4 La Baja Edad Media. Crisis siglos XIV y XV.
Tema 4 La Baja Edad Media. Crisis siglos XIV y XV.
 
Vitrine 11 Tupperware
Vitrine 11 TupperwareVitrine 11 Tupperware
Vitrine 11 Tupperware
 
Open refine to update and clean up your messy data
Open refine to update and clean up your messy dataOpen refine to update and clean up your messy data
Open refine to update and clean up your messy data
 
VP 08/2016 Tupperware Essencial
VP 08/2016 Tupperware EssencialVP 08/2016 Tupperware Essencial
VP 08/2016 Tupperware Essencial
 
Vitrine 05/2016 Tupperware Essencial
Vitrine 05/2016 Tupperware EssencialVitrine 05/2016 Tupperware Essencial
Vitrine 05/2016 Tupperware Essencial
 
The Catholic Monarchs and the Habsbourg in Spain
The Catholic Monarchs and the Habsbourg in SpainThe Catholic Monarchs and the Habsbourg in Spain
The Catholic Monarchs and the Habsbourg in Spain
 

Similar to Make fast file merge program using c

Linux programming study
Linux programming studyLinux programming study
Linux programming studyYunseok Lee
 
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARK
 
Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1Jinkyoung Kim
 
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화Jaeseung Ha
 

Similar to Make fast file merge program using c (6)

Merge reversed2
Merge reversed2Merge reversed2
Merge reversed2
 
Linux programming study
Linux programming studyLinux programming study
Linux programming study
 
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
 
Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1
 
Stage2
Stage2Stage2
Stage2
 
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
 

Make fast file merge program using c