Скорость цикла For

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Скорость цикла For

Сообщение Matew » 05.12.2006 (Вт) 4:15

Заюзал утилиту по отимизации кода. Пишет вот такие интересные вещи:
1. For i=1 To Выражение - замедляет код. Всегда считал, что VB один раз просчитывает Выражение. Это не так?
2. "Next i" медленне, чем просто "Next" ? :shock:
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.12.2006 (Вт) 7:17

1. Один раз просчитывает.
2. Очень сомнительно.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.12.2006 (Вт) 7:31

Никакой разницы. Благо, проверить ничего не стоит.
Код: Выделить всё
Sub Main()
Dim i As Long, u As Long, Start As Double, dummy As Double
Start = Timer
For i = 1 To Log(1000) ^ 10
    dummy = dummy + 1
Next i
Debug.Print Timer - Start
Start = Timer
u = Log(1000) ^ 10
For i = 1 To u
    dummy = dummy + 1
Next
Debug.Print Timer - Start
End Sub
Изображение

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 05.12.2006 (Вт) 8:10

CodeSMART писал(а):Slow 'For ... Next <Counter>' statement used instead of its faster 'For ... Next' equivalent.
Complex expression used as 'For' statement <Start> value.
Complex expression used as 'For' statement <End> value.
Consider using variables representing pre-calculated values in the 'For' statement's <End>.

Странно...
Зачем выявлять такие "ошибки"? Это политика? (мол вон сколько нашла наша мегапрога) :)
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 34

    TopList