- Сообщения
- 8,671
- Репутация
- 2,481
Предлагаю в этой теме обсуждать все вопросы связанные со скоростью обработки данных.
AZJIO недавно выявил очень интересный факт...
Вот тестовый пример:
Результат на моей машине:
Environment(Language:0419 Keyboard:00000409 OS:WIN_XP/Service Pack 3 CPU:X64 OS:X86)
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
======================