Добрый вечер.Задался вопросом.Есть диапазон,допустим А1:А100 ,объявляем его как массив(arr),какой цикл перебора быстрее. For Each In; For 1 To 100 ; For 1 To UBound . Насколько большая разница между ними,ведь диапазон (массив) находится в памяти и обращений к листу не будет?
Добрый вечер.Задался вопросом.Есть диапазон,допустим А1:А100 ,объявляем его как массив(arr),какой цикл перебора быстрее. For Each In; For 1 To 100 ; For 1 To UBound . Насколько большая разница между ними,ведь диапазон (массив) находится в памяти и обращений к листу не будет?megavlom
Sub test() Dima, x, i, tma = [a1:a100] tm = TimerForEachxInaDebug.PrintxNextMsgBoxTimer - tmtm = TimerFori = 1 To 100 Debug.Print a(i, 1) NextMsgBoxTimer - tmtm = TimerFori = 1 To UBound(a) Debug.Print a(i, 1) NextMsgBoxTimer - tmEndSub
Быстрее For Each x In a получается, но в реальности массивы из одного столбца редко бывают, и часто там тоже счётчик добавляют, чтоб работу делать...
А померить ?
Sub test() Dima, x, i, tma = [a1:a100] tm = TimerForEachxInaDebug.PrintxNextMsgBoxTimer - tmtm = TimerFori = 1 To 100 Debug.Print a(i, 1) NextMsgBoxTimer - tmtm = TimerFori = 1 To UBound(a) Debug.Print a(i, 1) NextMsgBoxTimer - tmEndSub
Быстрее For Each x In a получается, но в реальности массивы из одного столбца редко бывают, и часто там тоже счётчик добавляют, чтоб работу делать...Hugo
Hugo, я думаю объектная коллекция все таки медленне массива. Опять же если массив тип Variant, будет медленне однородного с объявленным типом. Но это догадки - не проверял...
Hugo, я думаю объектная коллекция все таки медленне массива. Опять же если массив тип Variant, будет медленне однородного с объявленным типом. Но это догадки - не проверял...VovaK
Всем удачи. У нас все получится. С уважением, Владимир.
Да в общем я особо не заморачиваюсь - бывает и for each использую, если столбец один... Кода писать меньше Ну а если параллельно с перебором нужно отслеживать индекс - то всё равно i считать...
Да в общем я особо не заморачиваюсь - бывает и for each использую, если столбец один... Кода писать меньше Ну а если параллельно с перебором нужно отслеживать индекс - то всё равно i считать...Hugo