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
[52822] memset()보다 더 빠른 함수가 없을까요?(내용 추가 했습니다..)
이용태 [kidary97] 1689 읽음    2008-03-21 11:25
프로그램을 짜는 중.. memset()를 이용한 데이터 복사를 하고 있습니다.

예를 들면 다음과 같습니다.

다음과 같은 10개의 데이터를 갖고 있는 a[10]라는 배열이 있다고 해보죠.

a[10]
___________________
0|1|2|3|4|5|6|7|8|9
-------------------

그리고 a[]보다 10배 큰 b[100]이 있다고 해보죠.

a[]의 각 요소를 memset()를 이용하여 b[]에 다음과 같이 복사합니다.

for(int i = 0; i < 10; i++)
   memset(b, a[i], 10);

이렇게 한다면 b[]엔 다음과 같이 데이터가 들어가 있겠죠..

b[200]
__________________________________________________________________________________________________
0|0|0|0|0|0|0|0|0|0|1|1|1|1|1|1|1|1|1|1|1|----중간생략---8|8|8|8|8|8|8|8|8|8|9|9|9|9|9|9|9|9|9|9|
--------------------------------------------------------------------------------------------------
                                                                      
그런데... 이게 전체 memset()하는 횟수가 적을땐 상관이 없는데... memset()하는 횟수가 커지게 되면 시간이 많이 걸리게 되더군요..

만약 memset() 한번 하는 시간이 0.001초라 그러면... 2000번 하면... 2초가 걸리게 됩니다.

이렇게 되면 한번 작업 할때마다 2초씩 기달려야 하니... 대략 짜증이 납닌다.

memset()보다 더 빨리 복사할 수 있는 함수가 있을까요?

또는 획기적으로 속도를 올릴 수 있는 방법이 있으면 좀 알려주시면 정말로.. 정말로 감사하겠습니다..

부탁드립니다... (__)




내용추가----------------------------
다음과 같이 테스트를 해봤는데요...

memset()를 총 4000*1000번을 수행합니다.. 수행 시간은 대략 0.5초 나옵니다.

0.5초 나오는것을 0.1초로 할 수 있는 방법이 있을까요??

속도를 무조건 올려야 합니다... ㅠㅠ



#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <mem.h>

const int nSIZE = 5;
int initData[4000*1000];
int Data[4000*1000*5];

void Check()
{
    int k, kmax= sizeof(initData)/sizeof(initData[0]);
    int *p = Data;

    for(k=0; k<kmax; k++)
    {
        memset( &Data[k*nSIZE], initData[k], nSIZE );
    }
}

int main()
{
    clock_t start, end;
    start = clock();
    Check();
    end = clock();
    cout << (end - start)/CLK_TCK << endl;
    system("PAUSE");
    return 0;
}

+ -

관련 글 리스트
52822 memset()보다 더 빠른 함수가 없을까요?(내용 추가 했습니다..) 이용태 1689 2008/03/21
52824     Re:memset()보다 더 빠른 함수가 없을까요? 금목암 1566 2008/03/21
52838         memccpy()는 제가 원하는 기능이 아닌거 같네요.. 암튼 감사합니다.(냉무) 이용태 1354 2008/03/21
52840             Re:memccpy()는 제가 원하는 기능이.... 좀더 생각해보고.. 테스트해 보고 대답하시지... 장성호 1370 2008/03/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.