Решил испытать скорость Autoit относительно Visual Basic 2008 .Net, может кому-то будет интересно.
Для тестирования составил аналогичный код на двух языках.
Для Autoit провел три вида тестов - № 1 и 2 - по три запуска каждый, 3 тест один запуск, больше запускать не захотел .
Для VB .Net провел 4 вида тестов по три запуска каждый.
Максимальное сходство кодов достигается в 1 и 2 тестах с VB Net. В них используются медленные переменные и массивы типа Object, которые, кстати, в нормальном коде почти не употребляются.
Коды 3 и 4 VB Net привел для сравнения, в них используется достаточно быстрые переменные и массив типа Integer, которые скорее всего и использовались бы в реальных приложениях.
В тесте 3 у Autoit и VB Net использовал 100 млн. итераций цикла, т.к. VB Net показывал 0 мс. при 10 млн. итераций.
Тесты:
Получается, Autoit проигрывает в скорости:
при использовании в VB переменных типа Object примерно в 3,5 раза,
при использовании в VB переменной и массива типа Object примерно в 6 раз,
при использовании в VB переменных типа Integer примерно в 650 раз,
при использовании в VB переменной и массива типа Integer примерно в 450 раз.
Для тестирования составил аналогичный код на двух языках.
Для Autoit провел три вида тестов - № 1 и 2 - по три запуска каждый, 3 тест один запуск, больше запускать не захотел .
Для VB .Net провел 4 вида тестов по три запуска каждый.
Максимальное сходство кодов достигается в 1 и 2 тестах с VB Net. В них используются медленные переменные и массивы типа Object, которые, кстати, в нормальном коде почти не употребляются.
Коды 3 и 4 VB Net привел для сравнения, в них используется достаточно быстрые переменные и массив типа Integer, которые скорее всего и использовались бы в реальных приложениях.
В тесте 3 у Autoit и VB Net использовал 100 млн. итераций цикла, т.к. VB Net показывал 0 мс. при 10 млн. итераций.
Тесты:
Autoit тест 1 (присвоение значения переменной 10 млн. раз):
Результаты: 7234 мс., 7255 мс., 7197 мс.
Autoit тест 2 (заполнение массива длиной 10 млн. элементов):
Результаты: 28307 мс., 28288 мс., 28268 мс.
Autoit тест 3 (присвоение значения переменной 100 млн. раз):
Результаты: 71845 мс.
VB 2008 .Net тест 1 (присвоение значения переменной типа Object 10 млн. раз):
Результаты: 2015 мс., 2125 мс., 2046 мс.
VB 2008 .Net тест 2 (заполнение массива типа Object длиной 10 млн. элементов):
Результаты: 4750 мс., 4531 мс., 4921 мс.
VB 2008 .Net тест 3 (присвоение значения переменной типа Integer 100 млн. раз):
Результаты: 109 мс., 109 мс., 109 мс.
VB 2008 .Net тест 4 (заполнение массива типа Integer длиной 10 млн. элементов):
Результаты: 62 мс., 62 мс., 46 мс.
Код:
Dim $Test = 0
Dim $N = TimerInit()
For $i = 1 To 10000000
$Test = $i
Next
MsgBox(0, "Прошло", TimerDiff($N))
Результаты: 7234 мс., 7255 мс., 7197 мс.
Autoit тест 2 (заполнение массива длиной 10 млн. элементов):
Код:
Dim $Test[10000000]
Dim $N = TimerInit()
For $i = 0 To 9999999
$Test[$i] = $i
Next
MsgBox(0, "Прошло", TimerDiff($N))
Результаты: 28307 мс., 28288 мс., 28268 мс.
Autoit тест 3 (присвоение значения переменной 100 млн. раз):
Код:
Dim $Test = 0
Dim $N = TimerInit()
For $i = 1 To 100000000
$Test = $i
Next
MsgBox(0, "Прошло", TimerDiff($N))
Результаты: 71845 мс.
VB 2008 .Net тест 1 (присвоение значения переменной типа Object 10 млн. раз):
Код:
Dim Test As Object = 0
Dim N As DateTime = Now
For i As Object = 1 To 10000000
Test = i
Next
MsgBox((Now - N).TotalMilliseconds.ToString)
Результаты: 2015 мс., 2125 мс., 2046 мс.
VB 2008 .Net тест 2 (заполнение массива типа Object длиной 10 млн. элементов):
Код:
Dim Test(9999999) As Object
Dim N As DateTime = Now
For i As Object = 0 To 9999999
Test(CInt(i)) = i
Next
MsgBox((Now - N).TotalMilliseconds.ToString)
Результаты: 4750 мс., 4531 мс., 4921 мс.
VB 2008 .Net тест 3 (присвоение значения переменной типа Integer 100 млн. раз):
Код:
Dim Test As Integer = 0
Dim N As DateTime = Now
For i As Integer = 1 To 100000000
Test = i
Next
MsgBox((Now - N).TotalMilliseconds.ToString)
Результаты: 109 мс., 109 мс., 109 мс.
VB 2008 .Net тест 4 (заполнение массива типа Integer длиной 10 млн. элементов):
Код:
Dim Test(9999999) As Integer
Dim N As DateTime = Now
For i As Integer = 0 To 9999999
Test(i) = i
Next
MsgBox((Now - N).TotalMilliseconds.ToString)
Результаты: 62 мс., 62 мс., 46 мс.
Получается, Autoit проигрывает в скорости:
при использовании в VB переменных типа Object примерно в 3,5 раза,
при использовании в VB переменной и массива типа Object примерно в 6 раз,
при использовании в VB переменных типа Integer примерно в 650 раз,
при использовании в VB переменной и массива типа Integer примерно в 450 раз.