Практическое руководство. Улучшение быстродействия цикла
Обновлен: Ноябрь 2007
Можно оптимизировать производительность цикла с помощью наиболее эффективных типов данных. Для короткого цикла, выполняющегося несколько раз, разница может быть незначительной. Но если цикл выполняется очень много раз, экономия производительности может быть существенной.
Integer и UInteger — наиболее эффективные типы данных в текущих платформах. Short, Long, UShort и ULong не столь эффективны, а при использовании типа Decimal производительность значительно ниже. Дополнительные сведения см. в разделе Числовые типы данных.
Оптимизация производительности цикла For... Next
Используйте наиболее эффективный тип данных для переменной управления. В приведенном ниже примере показаны некоторые возможные варианты цикла. Абсолютные показатели времени выполнения зависят от платформы, но отношение этих показателей не меняется.
For fastest As Integer = 0 to 1000000 ' Insert statements to execute for each value of fastest. Next fastest For notAsFast As Long = 0 to 1000000 ' Insert statements to execute for each value of notAsFast. Next notAsFast For muchSlower As Decimal = 0 to 1000000 ' Insert statements to execute for each value of muchSlower. Next muchSlower
В первом случае требуется несколько меньше времени для выполнения, чем во втором. Integer может обрабатывать значения только до 2 147 483 647, а UInteger — только до 4 294 967 295. Во втором и третьем случаях можно обрабатывать большие значения, поскольку Long и Decimal принимают широкий диапазон целых чисел, но операции с ними выполняются медленнее. Возможно, при разработке потребуется выбирать между скоростью и емкостью используемых типов данных.
См. также
Задачи
Практическое руководство. Передача управления за пределы структуры управления
Практическое руководство. Повторное выполнение нескольких инструкций
Практическое руководство. Запуск нескольких операторов для каждого элемента в коллекции или массиве
Практическое руководство. Переход к следующей итерации цикла
Основные понятия
Ссылки
Инструкция For... Next (Visual Basic)