※ 이 문서는 뭐 그냥 하면 되지. ()에서 인쇄하였으며,
저작권은 해당 블로그 운영자에게 있습니다.

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 문이 제일 빠름.

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

결과는 별 차이가 없다는 겁니다.

For문에서 종료값의 형태에 따른 속도 비교 결과 - 차이 없음

이건 그냥 심심해서 해봤어요.

지난 글에서도 밝혔지만 이 속도 비교는 정확한 것도 아니고, 엄청나게 차이가 많이 나는 것도 아닙니다. 하지만 이왕이면 조금이라도 속도를 빠르게할 수 있는 최적화된 소스를 작성하는 것이 더 좋겠죠.

관련글

AutoIt3 - IF, Switch, Select 조건문의 속도 비교

블로그의 글과 그림, 첨부파일의 복제, 재배포를 금지합니다. =>  자세히 보기
티스토리 초대장 필요하신 분은 댓글남겨주세요.
give start - 굿네이버스 - 사랑의 열매 - 아름다운재단 - 어린이재단 - 유니세프
굿네이버스 배너
사랑의 열매 배너
아름다운 재단 배너 어린이 재단 배너 유니세프 한국위원회 - 배너