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

메신저 프로젝트
[974] 6. wine_encrypt.lib, wine_number.lib구현
NeverWash [neverwash] 20811 읽음    2012-03-14 12:03
프로젝트가 삼천포로 빠졌군요.
네트웍 클래스를 구성하다가 암호화 부분을 처리하기 위한 encrypt.lib를 구현하는것 까진 좋았는데
소수계산을 위해서 number class까지 도전해봤습니다.

기존에 워낙에 유명한 라이브러리가 있어서 그걸 사용하다가 한번 만들어 보자고 생각이 들어서 덤볐습니다.
이왕 외부 라이브러리는 전혀 쓰지않고 만들어 보겠다는 생각이 들었기 때문에..
덕분에 일정에 심각한 타격이... T_T

아래의 소스로 밴치마킹 한 결과를 첨부파일에 올렸습니다.

int main()
{
    long start_time, calculate_time, display_time;
    int max_loop = 9;
    //*
    Tmy_num a(7);
    start_time = ::GetTickCount();
    for ( int loop=0; loop<max_loop; loop++ )
    {
        a *= a;
        calculate_time = ::GetTickCount();
    }

    cout << "a: " << a.string() << endl << endl;
    display_time = ::GetTickCount();

    cout << "calculate time : " << (calculate_time-start_time)/1000.0 << endl;
    cout << "display time : " << (display_time-calculate_time)/1000.0 << endl;

    //---------------------------------------------------------
    cout << endl << endl;

    BigInteger c(7);
    start_time = ::GetTickCount();
    for ( int loop=0; loop<max_loop; loop++ )
    {
        c *= c;
        calculate_time = ::GetTickCount();
    }

    cout << "c: " << c << endl << endl;
    display_time = ::GetTickCount();

    cout << "calculate time : " << (calculate_time-start_time)/1000.0 << endl;
    cout << "display time : " << (display_time-calculate_time)/1000.0 << endl;
}

똑같은 방식으로 제가 만든 라이브러리랑 BigInteger 라이브러리를 비교했습니다.
처음 만든 취지가 디스플레이 속도는 좀 느리더라도 계산 속도만큼은 더 빠르게 하자는 거였는데.
반대로 되어버렸습니다.

아직 튜닝전이니까 튜닝을 한다면 좀 더 좋은 성적을 기대해 볼수도 있지 않을까 합니다.
아무튼 이걸로 소수계산과 암호화에 사용할 계획이고요.

암호화 알고리즘은 RSA을 사용하고요.
현재는 작은 소수를 이용해서 간단히 테스트까지는 완료한 상태입니다.
이제 큰 소수를 사용할수 있으니.. 현실적으로 사용할 수 있는 단계로 까지 발전시켜야 하고요.

다음으로 네트웍 클래스를 만들때, 지금까지 만든 variant, number, encrypt, lock, thread 라이브러리를 활용할 계획입니다.

+ -

관련 글 리스트
974 6. wine_encrypt.lib, wine_number.lib구현 NeverWash 20811 2012/03/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.