C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[6068] 심심해서 해본 테스트
권기식 [orion96] 1408 읽음    2002-11-06 14:51
제대로 되었는지는 모르겠습니다.
전에 짰던 시뮬레이션 프로그램을 확장하려고 하는데...
전에는 비베로 짰었지요...
50만회의 루프를 돌리는데 시간이 엄청 걸리더군요..
그래서 빌더로 짜면 시간이 얼마만큼 단축될 수 있을까 생각하다가 간단하게 테스트를 해봤습니다.
제대로 쓸 줄 아는 툴이 하나도 없어서 제대로 된 테스트인지 모르겠습니다.
그냥 단순히 자신을 1 증가시키는 루프를 5천만회 돌릴 동안 걸리는 시간을 비교해봤습니다.

개발 환경하에서 실행하는거랑 실행파일을 직접 실행하는 거랑 차이가 많이 나더군요...
자바는 그 생각까지 못해서 빌더에서 바로 돌려서 계산된 시간입니다.
제가 한 테스트가 정확하다면 비주얼 베이직으로 만든 프로그램의 계산 속도는 C로 짠 프로그램보다 2배 가량 느렸습니다.
비주얼 C++로 짠거는 디버깅 모드에서는 에러없이 실행되는데, 릴리즈 모드로 했더니 계산 시간을 출력하고는 에러가 나네요...

이유를 모르겠습니다.
Dialog Based로 버튼 하나 추가시켜서 만들었는데...

그럼.. ^^;


실험 환경
Pentium 3 650MHz
256MB RAM
Windows 98 SE

실행 결과
Visual Basic : 5.65초(Visual Basic 내에서 실행), 0.44 ~ 0.49초(exe 파일 실행)
Visual C++ : 0.47초(Debug version), 5.03e-6(Release version - error 발생함)
Borland C++ Builder 6 : 0.48초(Debug version), 0.24초(Release version)
Java(JBuilder 7) : 1.2초

=================================================================
VB 코드

Private Sub Command1_Click()
    Dim i As Long
    Dim j As Long
    Dim start As Double
   
    start = Timer
    For i = 0 To 50000000
        j = j + 1
    Next
   
    start = Timer - start
    MsgBox (start)
End Sub

=================================================================
VC++ 코드

void CTimeTestDlg::OnButton1()
{
    // TODO: Add your control notification handler code here
    long i, j;

    LARGE_INTEGER *freq = new LARGE_INTEGER;
    LARGE_INTEGER *start = new LARGE_INTEGER;
    LARGE_INTEGER *finish = new LARGE_INTEGER;
    double etime;
    char msg[11];

    j = 0;

    QueryPerformanceFrequency(freq);

    QueryPerformanceCounter(start);

    for (i = 0; i < 50000000; i++)
        j = j + 1;
    QueryPerformanceCounter(finish);
       
    etime = (double)(finish->QuadPart - start->QuadPart) / (double)freq->QuadPart;
    gcvt(etime, 10, msg);
   
    MessageBox(msg);
}

=================================================================
Java 코드

void jButton1_actionPerformed(ActionEvent e) {
    Date start;
    Date finish;
    long i, j = 0;;
    double diff;

    start = new Date();
    for (i = 0; i < 50000000; i++) {
      j = j + 1;
    }
    finish = new Date();

    diff = (double)(finish.getTime() - start.getTime()) / 1000f;

    dialog.showConfirmDialog(this, Double.toString(diff) + "seconds..",
                "Result", JOptionPane.DEFAULT_OPTION,
                JOptionPane.INFORMATION_MESSAGE);
}
박지훈.임프 [cbuilder]   2002-11-07 01:27 X
잘 봤습니다. 델파이나 C#과도 비교해보면 더욱 재밌지 않을까 싶은데요. ^^
권기식.별사랑 [orion96]   2002-11-07 19:48 X
델파이는 할줄 모르고... C#은 공부할 생각이 아직은 없습니당... ^^; 별로 구미가 안당기고 약간의 거부감도.. ㅡ.ㅡ; 델파이는 공부해봐야겠습니다.. 학생용 사야지~
박지훈.임프 [cbuilder]   2002-11-08 09:40 X
델파이를 공부하시면 C++Builder를 두배?는 과장이고, 1.5배정도는 더 활용하실 수 있을 겁니다. ^^
권기식.별사랑 [orion96]   2002-11-08 19:18 X
그렇군요.. 감사합니다.
강경화 [knight21]   2003-05-20 13:06 X
이런 테스트에서는 속도 차이가 없습니다.비베의 실행화일이 아닌 툴에서 실행한 시간인것 같구요
강경화 [knight21]   2003-05-20 13:07 X
이런 기본적이 차이는 없습니다. 그래픽처리나 데이타 베이스 처리에서는 많은 속도 차이가 나지만요 ^^

+ -

관련 글 리스트
6068 심심해서 해본 테스트 권기식 1408 2002/11/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.