PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2011/03/07 22:05:58
Name 레필리아
Subject C언어 파일 입출력 관련 질문입니다.
C언어 질문글에 답글만 달다가 질문글 남겨보는건 오랜만인 것 같네요..
파일 프로세싱을 배우는 과목인데, 첫 과제가 풀기가 난해해서 질문글 남깁니다.

0~9까지의 숫자로 이루어져있는 800MB 짜리 파일이 있습니다.
이 파일을 특정 위치에 복사하는 프로그램을 만드는 것이 과제입니다.

복사하는 프로그램 자체는 정말 쉬운편인데.. 문제는 분반내에서 복사 속도를 기준으로 하여
1등은 100점, 2등은 70점, 3등 4등은 50점.. (나머지는 점수 없음 ㅜㅜ)
이렇게 점수를 준다고 합니다.

속도를 측정할때 1번은 HDD에 복사하고 1번은 USB에 복사하여 두 시간의 합계를 기준으로 한다고 합니다.

속도를 증가하기 위하여 나름대로 머리를 굴려서.....
C++ 의 파일 stream보다는 C의 fopen을 이용할 계획이고, 입출력 역시 printf, scanf 보다는 putc, getc를 이용할 계획입니다.

아무래도 정수를 입출력 하는 것 보다는 문자(char형)를 입출력 하는 것이 빠를테니까요...

그 밖에 처리 속도를 올리기 위해 생각 해야 할 부분이 어떤 것이 있을까요??

덧) 파일 프로세싱이라 해봐야 파일을 읽어서 내용을 죄다 메모리에 올린 다음(800MB) 다시 파일에 쓰는 방법 밖에 모릅니다.
더 좋은 알고리즘이나 방법이 있다면 알려주세요!

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
deathknt
11/03/07 22:36
수정 아이콘
멀티쓰레드를 사용해서, 파일 복사할때 이용해보는 것은 어떨까요?
예)
(1) 복사 Thread 생성(2개)
(2) 1번 Thread는 0~399MB복사하는 구조
(3) 2번 Thread는 399MB~800MB복사하는 구조
(4) 복사 명령이 들어오면 1,2번 Thread 동작
이렇게 하면 좀 더 빨라지지 않을까 생각합니다.

그러면 단일 Thread복사하는 것 보다는 여러개(10개정도?)하는것이 빠를것 같습니다.
물론 이것도 여러번 테스트해서 결과를 비교해봐야 할 것입니다. Thread 함수에 진입하는것도 시간에 들어가니까요.
지구사랑
11/03/07 23:25
수정 아이콘
Block read & write 인 fread() & fwrite() 를 쓰면 반칙인가요? 아니라면 아마도 가장 빠른 방법일 겁니다. 사용법은 구글링하시구요.
청바지
11/03/08 04:48
수정 아이콘
멀티스레드 쓰면 더 느려지구요.
하드->하드 복사의 경우 한번에 많은 용량 읽었다가 한번에 쓰는 방식이 빠릅니다.
헤드가 읽는 위치랑 쓰는 위치를 최대한 적게 왔다갔다하게 만드는거죠.
하지만 800MB나 되면 한번에 모두 메모리에 올리게 되면 메모리 용량 문제로 느려질 수 있으니 적당한 크기로 하는게 필요하겠네요.
크기는 클러스터 사이즈의 배수가 되도록 하시구요.
하드->USB의 경우 읽는대로 쓰는게 빠를 것 같네요. 물리적으로 다른 하드간에도 마찬가지이구요.
그리고 당연히 putc, getc로 1byte씩 처리하는것보다 블록단위로 하는게 빠르구요.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
100545 소개팅 후 반응 질문이요.. 잘 되가는 건줄 알았는데 이상하네요. [9] 한듣보3079 11/03/08 3079
100544 근 7년만에 컴터 지름입니다. 샌디+ssd 견적 확인 부탁드립니다. [2] goGo!!@heaveN.1801 11/03/08 1801
100540 이소라씨 WOW도 하나요? [8] 정용현3376 11/03/08 3376
100538 운동화 수선 해보신분 있으신지요? [6] 스타3434 11/03/08 3434
100537 컴터 견적좀 부탁드릴게요 [3] 바닥인생2429 11/03/08 2429
100536 전공과목 영어강의 관련 질문입니다 [1] Unchain1661 11/03/08 1661
100534 무선인터넷에 관해서 질문드립니다. [1] loveagain..1537 11/03/07 1537
100533 어제 맨유vs리버풀 경기관련 질문입니다. [5] 축구사랑2118 11/03/07 2118
100532 워싱턴 타임즈와 통일교 [6] CrazyNansa2305 11/03/07 2305
100531 노트북 추천 부탁드리겠습니다! [3] DEICIDE1999 11/03/07 1999
100530 갑자기 궁금해졌어요. (성우관련) [3] 정제된분노2193 11/03/07 2193
100529 노트북 ASUS 제품 구매시 OS 질문 입니다. [3] 상어이빨1727 11/03/07 1727
100528 C언어 파일 입출력 관련 질문입니다. [5] 레필리아2362 11/03/07 2362
100527 혹시 온게임넷 프로리그 중간에 광고에서 하던 태연사랑2236 11/03/07 2236
100526 자취방이 반지하인데 폰이 안터집니다-_-;;; [5] Paloalto2343 11/03/07 2343
100525 [연애] 연애상담입니다. [16] 삭제됨2772 11/03/07 2772
100524 컴퓨터 견적 수정 부탁드립니다 ㅠㅠ [3] 라이디스2126 11/03/07 2126
100523 와이셔츠 빨래할 때 세탁기에 넣어도 되나요?? [2] 계란말이6562 11/03/07 6562
100522 교수님들과의 친분 문제.. [1] 대박납시다2136 11/03/07 2136
100521 이것이 정당방위에 해당되나요? [3] 5월5일2070 11/03/07 2070
100520 해외 여성 솔로 싱어 곡 제목 질문입니다. TRDD1694 11/03/07 1694
100519 코스트코 채용에 대해 질문 드립니다. [1] 현상13297 11/03/07 13297
100518 서비스에서 Remote Access Connection Manager 가 시작되지 않습니다 모모리3435 11/03/07 3435
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로