|
네 로직은 열심히 신경쓰는데
그냥 궁금해져서 질문한거에요.
정말 궁금해요.
zi 님이 쓰신 글 :
: 이런거 신경쓰지 마시고 로직에 신경을 쓰는게... ^^
: cpu 가 하루가 다르게 발전하고 있는데... 별 의미 없어보이네요..
: 특히 i++, ++i 는 구분은 특별히 구분해서 써야 할 때가 있지만 쓰임은 속도가 아니라 로직상 구분해서 쓰는 거에요.
: 일반적으로는 거의 구분없이 쓰여질때가 많습니다.
:
: 아루스 님이 쓰신 글 :
: : 연산자가 전치/후치에 따라 빠르기 순서가 다음과 같았습니다.
: :
: : i-- > i++ > ++i > --i
: :
: : 전 마지막 것이 빠른줄 알고 썼었는데 ㅡㅜ
: : 왜 이런지 아시나요;;
: :
: :
: : 아래는 테스트에 사용 된 코드였습니다.
: : void __fastcall TForm1::Button1Click(TObject *Sender)
: : {
: : unsigned int Before;
: : double t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0;
: : double loop = 10;
: : for ( int i = 0; i < loop; ++i )
: : {
: : Before = GetTickCount();
: : for ( int i = 0; i < 1000000; ++i )
: : {
: : AnsiString s = AnsiString( "s" );
: : }
: : t2 += ( GetTickCount() - Before );
: :
: : Before = GetTickCount();
: : for ( int i = 0; i < 1000000; i++ )
: : {
: : AnsiString s = AnsiString( "s" );
: : }
: : t3 += ( GetTickCount() - Before );
: :
: : Before = GetTickCount();
: : for ( int i = 1000000; i > 0; --i )
: : {
: : AnsiString s = AnsiString( "s" );
: : }
: : t4 += ( GetTickCount() - Before );
: :
: : Before = GetTickCount();
: : for ( int i = 1000000; i > 0; i-- )
: : {
: : AnsiString s = AnsiString( "s" );
: : }
: : t5 += ( GetTickCount() - Before );
: : }
: : Memo1->Lines->Add( FloatToStr( t1 / loop ) );
: : Memo1->Lines->Add( FloatToStr( t2 / loop ) );
: : Memo1->Lines->Add( FloatToStr( t3 / loop ) );
: : Memo1->Lines->Add( FloatToStr( t4 / loop ) );
: : Memo1->Lines->Add( FloatToStr( t5 / loop ) );
: : }
|