While ~ WEnd, For ~ Next, Do ~ Until 속도 비교
/Autoit/AutoIt :: 2011. 10. 17. 14:28
While ~ WEnd, For ~ Next, Do ~ Until 속도 비교
지난 조건문의 속도 비교에 이어서 순환문의 속도비교입니다.
AutoIt3 - IF, Switch, Select 조건문의 속도 비교
AutoIt에서 순환문은 While ~ WEnd, For ~ Next, Do ~ Until, For ~ In ~ Next 가 있는데, For ~ In ~ Next는 오브젝트같은 곳에서 사용하는 지라 사용하는 경우가 드물어서 이번 실험에서 제외하였습니다.
생각보다는 속도 차이가 많이 나오네요.
While ~ WEnd, For ~ Next, Do ~ Until
1부터 100,000까지 1씩 더해가는 소스를 작성해서 각각의 시간을 측정해봤습니다.
Global $iLoop1 = 0, $iTime1 = TimerInit() While $iLoop1 <= 100000 $iLoop1 += 1 WEnd $iTime1 = TimerDiff($iTime1) Global $iLoop2 = 0, $iTime2 = TimerInit() For $i = 1 To 100000 $iLoop2 += 1 Next $iTime2 = TimerDiff($iTime2) Global $iLoop3 = 0, $iTime3 = TimerInit() Do $iLoop3 += 1 Until $iLoop3 >= 100000 $iTime3 = TimerDiff($iTime3) ConsoleWrite(@CRLF & "+ the results are in!!!" & @CRLF) ConsoleWrite("> ========================================================================" & @CRLF) ConsoleWrite("> While: " & @TAB & "avg: " & Round($iTime1 / 100000, 15) & ", total: " & Round($iTime1, 15) & @CRLF) ConsoleWrite("> For: " & @TAB & @TAB & "avg: " & Round($iTime2 / 100000, 15) & ", total: " & Round($iTime2, 15) & @CRLF) ConsoleWrite("> Do: " & @TAB & @TAB & "avg: " & Round($iTime3/ 100000, 15) & ", total: " & Round($iTime3, 15) & @CRLF) ConsoleWrite("> ========================================================================" & @CRLF) Exit
For ~ Next, Do ~ Until, While ~ WEnd 순이에요. 특히 While ~ WEnd와 For ~ Next의 시간차이가 3배정도 차이가 납니다.
For ~ Next에서 변수를 사용할 때 속도 비교
배열을 이용한 순환문에서 For의 마지막 값을 UBound를 이용할 때와 변수를 이용할 때의 속도도 비교해봤습니다.
Global $aArray[100000], $iLoop1 = 0, $iLoop2 = 0 Global $iTime1 = TimerInit() For $i = 1 To UBound($aArray) - 1 $iLoop1 += 1 Next $iTime1 = TimerDiff($iTime1) Global $iUbound = UBound($aArray) - 1, $iTime2 = TimerInit() For $i = 1 To $iUbound $iLoop2 += 1 Next $iTime2 = TimerDiff($iTime2) ConsoleWrite(@CRLF & "+ the results are in!!!" & @CRLF) ConsoleWrite("> ========================================================================" & @CRLF) ConsoleWrite("> Ubound: " & @TAB & "avg: " & Round($iTime1 / 100000, 15) & ", total: " & Round($iTime1, 15) & @CRLF) ConsoleWrite("> Variables: " & @TAB & "avg: " & Round($iTime2 / 100000, 15) & ", total: " & Round($iTime2, 15) & @CRLF) ConsoleWrite("> ========================================================================" & @CRLF) Exit
결과는 별 차이가 없다는 겁니다.
이건 그냥 심심해서 해봤어요.
지난 글에서도 밝혔지만 이 속도 비교는 정확한 것도 아니고, 엄청나게 차이가 많이 나는 것도 아닙니다. 하지만 이왕이면 조금이라도 속도를 빠르게할 수 있는 최적화된 소스를 작성하는 것이 더 좋겠죠.
관련글
'Autoit > AutoIt' 카테고리의 다른 글
파일을 바이너리 문자열로 변환 (7) | 2011.12.15 |
---|---|
AutoIt3 - IF, Switch, Select 조건문의 속도 비교 (0) | 2011.10.13 |
AutoIt3Wrapper UTF8 without BOM 오류 (0) | 2011.08.29 |
AutoIt Script 빈 줄 지우기 - tidy (2) | 2011.08.04 |
자동로그인하는 방법 - IE 함수 이용 (0) | 2011.03.23 |
블로그의 글과 그림, 첨부파일의 복제, 재배포를 금지합니다. => 자세히 보기
티스토리 초대장 필요하신 분은 댓글남겨주세요.
give start - 굿네이버스 - 사랑의 열매 - 아름다운재단 - 어린이재단 - 유니세프 | ||
---|---|---|
![]() |
||
![]() | ||
![]() |
![]() |
![]() |