etc
퍼포먼스를 위한 발악
ryujt
2012. 2. 11. 23:52
오래 전부터 습관이 된 탓에 and 조건을 분별할 때에는 항상 확률이 낮은 것부터 나열하도록 신경을 쓰고 있었습니다. 그러다가, 요즘 PC에서 그런 것이 과연 얼마나 퍼포먼스 향상에 도움이 될 까 궁굼해 졌습니다. 바로 테스트에 들어 갔습니다.
[소스 1]
근래에는 PC의 성능이 워낙에 좋아졌기 때문에 일반적인 경우 퍼포먼스에 대한 고민을 많이 할 필요가 없었졌습니다. 하지만, 스마트폰, 게임 및 증권 시스템 트레이딩과 같이 반복 계산이 많은 프로젝트 등에서는 이런 작은 차이들이 엄청난 결과를 만들어 내기도 합니다.
그렇긴 해도 반복 횟수를 감안하면 상당한 뻘짓이네요 ^^;
[소스 1]
procedure TForm1.Button1Click(Sender: TObject); var Tick : Cardinal; Loop, a, b : integer; begin Tick := GetTickCount; for Loop := 1 to 100000000 do begin a := Random(2); b := Random(100); // if (a = 1) and (b = 1) then Tag := Tag + 1; if (b = 1) and (a = 1) then Tag := Tag + 1; end; Caption := IntToStr(GetTickCount - Tick); end;11: 라인과 12: 라인이 오늘의 주인공입니다. 결과적으로 똑같은 두 문장의 속도 차이는 아래와 같습니다.
- 11: 라인 평균 1200 ms 정도
- 12: 라인 평균 730 ms 정도
근래에는 PC의 성능이 워낙에 좋아졌기 때문에 일반적인 경우 퍼포먼스에 대한 고민을 많이 할 필요가 없었졌습니다. 하지만, 스마트폰, 게임 및 증권 시스템 트레이딩과 같이 반복 계산이 많은 프로젝트 등에서는 이런 작은 차이들이 엄청난 결과를 만들어 내기도 합니다.
그렇긴 해도 반복 횟수를 감안하면 상당한 뻘짓이네요 ^^;