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
[70952] [질문]timer 대신 Thread Object를 사용하니깐 프로그램이 더 느려집니다...
만나바 [kokoksh] 2842 읽음    2014-02-25 10:35
C++ 빌더기반으로 개발중입니다.
TDBChart 에 db데이터를 1초 또는 2~3초 를 주기적으로 뿌려주는 작업을 타이머로 하고있습니다.
이 기능을 작동시키면 다른 데이터가져오는 기능들이 느려져서  타이머를 스레드로 대체하여 작동시켰습니다.
스레드로 바꾼뒤에 오히려 다른 db가져오는 기능들이 더 느려져서...성능 개선의 효과를 보지 못하였습니다.
어떻게 해야 성능 개선 효과를 볼수 있을까요..?

thread object 에 작성된 코드입니다.

__fastcall CThread::CThread(bool CreateSuspended)
    : TThread(CreateSuspended)
{
    Priority = tpLowest;
}
//---------------------------------------------------------------------------
void __fastcall CThread::Execute()
{


    while(!Terminated)
        {

            Synchronize(ShowStatus);

            WaitForSingleObject((void *)Handle, 20);  // 초간격으로 출력
        }
}
//---------------------------------------------------------------------------
void __fastcall CThread::ShowStatus(void)
{

    MainForm->ADOQuery1->Close();
    MainForm->ADOQuery1->SQL->Clear();
    MainForm->ADOQuery1->SQL->Text = "select * from ~~~~~;
    MainForm->ADOQuery1->Open();
    TAreaSeries *Area1 = new TAreaSeries(MainForm->DBChart1);
    TLineSeries *Lines2 = new TLineSeries(MainForm->DBChart2);
    TLineSeries *Lines3 = new TLineSeries(MainForm->DBChart3);
    TLineSeries *Lines4 = new TLineSeries(MainForm->DBChart4);
    TLineSeries *Lines5 = new TLineSeries(MainForm->DBChart5);


    MainForm->DBChart1->AddSeries(Area1);
    MainForm->DBChart2->AddSeries(Lines2);
    MainForm->DBChart3->AddSeries(Lines3);
    MainForm->DBChart4->AddSeries(Lines4);
    MainForm->DBChart5->AddSeries(Lines5);



    MainForm->DBChart1->Series[0]->AddXY(dtXValue,MainForm->ADOQuery1->FieldByName("aaa")->AsInteger;);
    MainForm->DBChart2->Series[0]->AddXY(dtXValue,MainForm->ADOQuery1->FieldByName("bbb")->AsInteger;);
    MainForm->DBChart3->Series[0]->AddXY(dtXValue,MainForm->ADOQuery1->FieldByName("ccc")->AsInteger;);
    MainForm->DBChart4->Series[0]->AddXY(dtXValue,MainForm->ADOQuery1->FieldByName("dddd")->AsInteger;);
    MainForm->DBChart5->Series[0]->AddXY(dtXValue,MainForm->ADOQuery1->FieldByName("eee")->AsInteger;);

    if(Total_CPU_Val > 80 ){
        MainForm->DBChart1->BackColor=clRed;
    }


    if(Total_CPU_Val > 80 ){
        MainForm->DBChart1->BackColor=clRed;
    }


    if( MainForm->DBChart1->Series[0]->Count()>10){
        MainForm->DBChart1->Series[0]->Delete(0);
    }
    if( MainForm->DBChart2->Series[0]->Count()>10){
        MainForm->DBChart2->Series[0]->Delete(0);
    }
    if( MainForm->DBChart3->Series[0]->Count()>10){
        MainForm->DBChart3->Series[0]->Delete(0);
    }
    if( MainForm->DBChart4->Series[0]->Count()>10){
        MainForm->DBChart4->Series[0]->Delete(0);
    }
    if( MainForm->DBChart5->Series[0]->Count()>10){
        MainForm->DBChart5->Series[0]->Delete(0);
    }


    MainForm->ADOQuery1->Next();
}


+ -

관련 글 리스트
70952 [질문]timer 대신 Thread Object를 사용하니깐 프로그램이 더 느려집니다... 만나바 2842 2014/02/25
70953     Re:[질문]timer 대신 Thread Object를 사용하니깐 프로그램이 더 느려집니다... Intotheblue 3439 2014/02/25
70954         Re:Re:[질문]timer 대신 Thread Object를 사용하니깐 프로그램이 더 느려집니다... 만나바 2806 2014/02/25
70956             Re:Re:Re:[질문]timer 대신 Thread Object를 사용하니깐 프로그램이 더 느려집니다... memi 3141 2014/02/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.