C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[69385] Re:Re:파일 출력을 실행하는데 속도가 너무 느립니다..좀 더 빠르게 할 수 있는 방법이 없을까요?
프뉴마 [pneuma] 3022 읽음    2013-04-24 13:44
답변에 정말 감사합니다 ^ㅡ^ 1번 개선사항으로 확 달라지네요ㅎ

2번에 말씀해주신 내용의 경우..1240개의 short형 데이터가 총 401개 있는 건데요,

그것을 동적배열로 선언해서 한꺼번에 읽어서..1240개씩 끊어서 출력하도록 작성한 것입니다.
(아직 동적배열을 다차원으로 선언할 줄을 몰라서요 ㅠㅋ)

그래서 저렇게 하는 것이 맞다..고 생각했는데, 틀린걸까요? 저렇게 뽑아서 파일마다 데이터를 보니

수치가 다른걸보니 맞는 것 같은데...TeeChart로 그리는데 모양이 개판이라 뭔가 잘못됐다 싶긴하지만요 ㅠㅋ

장성호 님이 쓰신 글 :
: 400개의 file을 저장하려는데...
:
: File을 열었다가(fopen) 닫는(fclose)동작은 파일하나에 1240번씩 반복하네요
:
: 같은파일에 한번  열때 1Byte밖에 쓰지 않고..
:
: 또 400개 파일이 아니라 401개 네요
:
: 총 401*1240번 파일을 열었다 닫았다를 반복하네요
:
:
: 개선은?
:
: 1) 하나의 파일은 한번만 open해서 모두 쓰고 난후에 close하세요
:        (두번째 for문 안에있는 fopen과 fclose를 for문 밖으로..)
:
:
: 2) 추가로..
:      pArray에 데이타는 모두 같은 데이타 인데..
:      파일이름만 바꿔서 쓰고있네요
:      파일에 쓸때마다 매번 fprintf로 쓰지 말고
:      for문 밖에서 pArray에 내용을 모두 변환해둔후에 ...
:      한번에 쓰는것이 훨씬 효율적일것입니다.
:
:      또는 파일하나  만들어두고 이름만 바꿔서 복사할수도 있구요
:
:
: 그럼..
:
: 프뉴마 님이 쓰신 글 :
: : void __fastcall TForm1::Button3Click(TObject *Sender)  //tmp 파일 분할 출력
: : {
: :     int DataSize = 1240;
: :     int scanPts = 401;
: :     //data type = short(2byte)
: :
: :
: :     short *pArray = new short [DataSize*scanPts];
: :
: :
: :     FILE *infile = fopen("d:\\test1.tmp","rb");
: :
: :     fseek(infile, 54806, SEEK_SET);
: :
: :     fread(pArray, sizeof(short), (DataSize*scanPts), infile);
: :
: :     fclose(infile);
: :
: :
: :     for(int i=0; i < scanPts; i++)
: :     {
: :         AnsiString FileName = "d:\\test\\test1_no.";
: :
: :         AnsiString TmpFileName = (FileName + IntToStr(i) + ".tmp");
: :
: :
: :         for(int j=0; j < DataSize; j++)
: :         {
: :             FILE *OutFile = fopen(TmpFileName.c_str(), "wb");
: :
: :             fprintf(OutFile, "%hd ", pArray[(i*DataSize) + j]);
: :
: :             fclose(OutFile);
: :         }
: :     }
: :
: :
: :
: :     delete [] pArray;
: : }
: :
: : 코드는 이렇습니다.  test1tmp를 읽어들여서 일정크기만큼 분할해서 출력하는 코드인데요.
: :
: : 제가 초보인지라 스레드는 모르고...이렇게 출력하다보니 400개의 파일을 출력하는데 시간이 꽤 오래 걸리더군요. 출력 중엔
: :
: : 프로그램을 사용할 수 없으니 답답하기도 하구요.
: :
: : 아직은 기초적인 함수밖에 사용할 줄 몰라서요....좀 더 출력 속도를 높일 수 있는 방법은 없을까요?

+ -

관련 글 리스트
69383 파일 출력을 실행하는데 속도가 너무 느립니다..좀 더 빠르게 할 수 있는 방법이 없을까요? 프뉴마 5401 2013/04/24
69384     Re:파일 출력을 실행하는데 속도가 너무 느립니다..좀 더 빠르게 할 수 있는 방법이 없을까요? 장성호 4863 2013/04/24
69385         Re:Re:파일 출력을 실행하는데 속도가 너무 느립니다..좀 더 빠르게 할 수 있는 방법이 없을까요? 프뉴마 3022 2013/04/24
69386             Re:Re:Re:파일 출력을 실행하는데 속도가 너무 느립니다..좀 더 빠르게 할 수 있는 방법이 없을까요? 장성호 2476 2013/04/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.