Что нового

Иследование скорости обработки данных в AutoIt

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Предлагаю в этой теме обсуждать все вопросы связанные со скоростью обработки данных.



AZJIO недавно выявил очень интересный факт...

Если результат условия True, то вариант с «If...Then...EndIf» отрабатывает быстрее в 2 раза, а если False, то наоборот но с меньшим разрывом. Это случай, когда если чаще результат False, то выгоднее его писать в одну строку.

Вот тестовый пример:

Код:
_SpeedTest("_Test_IfThen_OnTrue")
_SpeedTest("_Test_IfThenEndIf_OnTrue")

_SpeedTest("_Test_IfThen_OnFalse")
_SpeedTest("_Test_IfThenEndIf_OnFalse")

Func _Test_IfThen_OnTrue()
	For $i = 1 To 1000000
		If 1 Then $b = False
	Next
EndFunc

Func _Test_IfThenEndIf_OnTrue()
	For $i = 1 To 1000000
		If 1 Then
			$b = False
		EndIf
	Next
EndFunc

Func _Test_IfThen_OnFalse()
	For $i = 0 To 1000000
		If 0 Then $b = False
	Next
EndFunc

Func _Test_IfThenEndIf_OnFalse()
	For $i = 1 To 1000000
		If 0 Then
			$b = False
		EndIf
	Next
EndFunc

Func _SpeedTest($sTestFunc, $iRepeat_Test = 5)
	Local $aTests[$iRepeat_Test+1] = [$iRepeat_Test]
	Local $iTotal_Tests = 0
	
	For $x = 1 To $iRepeat_Test
		$iTimer = TimerInit()
		
		;=== CODE TEST ====
		Call($sTestFunc)
		;=== CODE TEST ===
		
		$aTests[$x] = Round(TimerDiff($iTimer), 3)
		$iTotal_Tests += $aTests[$x]
		ConsoleWrite("Test #" & $x & ": " & $aTests[$x] & " ms" & @LF)
	Next

	$iAverage = Round($iTotal_Tests / $iRepeat_Test, 3)
	ConsoleWrite("======================" & @LF & "Tests Average For [" & $sTestFunc & "]: " & $iAverage & @LF & "======================" & @LF & @LF)
EndFunc


Результат на моей машине:
Environment(Language:0419 Keyboard:00000409 OS:WIN_XP/Service Pack 3 CPU:X64 OS:X86)
Код:
Test #1: 1265.647 ms
Test #2: 1267.923 ms
Test #3: 1267.482 ms
Test #4: 1267.71 ms
Test #5: 1268.628 ms
======================
Tests Average For [_Test_IfThen_OnTrue]: 1267.478
======================

Test #1: 680.069 ms
Test #2: 688.456 ms
Test #3: 687.618 ms
Test #4: 684.006 ms
Test #5: 680.005 ms
======================
Tests Average For [_Test_IfThenEndIf_OnTrue]: 684.031
======================

Test #1: 247.038 ms
Test #2: 246.731 ms
Test #3: 251.33 ms
Test #4: 247.663 ms
Test #5: 244.438 ms
======================
Tests Average For [_Test_IfThen_OnFalse]: 247.44
======================

Test #1: 446.698 ms
Test #2: 441.89 ms
Test #3: 445.228 ms
Test #4: 442.503 ms
Test #5: 437.777 ms
======================
Tests Average For [_Test_IfThenEndIf_OnFalse]: 442.819
======================
 
Верх