- Код: Выделить всё
Public Declare Function GetTickCount Lib "kernel32" () As Long
Sub Main()
Dim t As Long
Dim i As Long, j As Long, k As Long
Dim A(1023, 767) As Long
t = GetTickCount
For k = 0 To 10
For i = 0 To 1023
For j = 0 To 767
A(i, j) = 255
Next
Next
Next
MsgBox (GetTickCount - t) / 1000
End Sub
Код чисто условный, но ему можно придать некоторый смысл. к примеру массив в данном случае может представлять битмап размером с рабочий стол, а цикл производит заливку этого битмапа 11 раз красным цветом. Вот результаты на моем Pentium III 533/WinXP - 2,5 сек.
А вот этот же код но размеры массива несколько изменены:
- Код: Выделить всё
Public Declare Function GetTickCount Lib "kernel32" () As Long
Sub Main()
Dim t As Long
Dim i As Long, j As Long, k As Long
Dim A(1024, 768) As Long 'границы массива изменены
t = GetTickCount
For k = 0 To 10
For i = 0 To 1023
For j = 0 To 767
A(i, j) = 255
Next
Next
Next
MsgBox (GetTickCount - t) / 1000
End Sub
Результат 0,34 сек.
Почему это происходит я не смог понять. Либо мой бейсик гонит либо бейсик вообще гонит. Прошу проверить на ваших системах.
Тесты проводились на программе скомпилированной с установкой флага Optimize fir fast code и включением всех флагов нетривиальной оптимизации.
В чем загвоздка, объясните!!!