Основной способ оптимизации скорости работы — это оптимизация кода приложения. При этом желательно прислушаться к рекомендациям разработчиков Visual Basic 6.
- Избегайте переменных типа variant и присваивайте соответствующие их применению типы. При использовании в выражениях переменных типа Variant теряется время на их приведение к конкретному типу в соответствии с типом выражения. Причем, необходимо иметь в виду, что при множественном описании ключевые слова As Type относятся только к одной переменной, то есть Dim А, в, с As String означает, что А и В— переменные типа variant (по умолчанию) и только с — строковая. В этом случае лучше написать Dim A As string, в As String, с As string.
- Используйте для арифметических вычислений переменные типа Long или Integer, поскольку они, в отличие от currency, single или Double, более всего соответствуют машинному коду. В табл. 10.4 приведено ранжирование по относительной скорости типов переменных при арифметических вычислениях.
Таблица 10.4. Относительная скорость вычисления для типов переменных
Тип переменной
| Относительная скорость
|
Long
| Самая высокая скорость
|
Integer
| Ниже чем у Long
|
Byte
| Ниже чем у Integer
|
Single
| Ниже чем у Byte
|
Double
| Ниже чем у Single
|
Currency
| Самая низкая скорость
|
- Назначайте часто используемое свойство объекта в переменные, так как назначение и чтение переменных работает быстрее (от 10 до 20 раз). Для сравнения приведены два примера с двумя вариантами текста кода, при этом второй вариант кода более быстрый, чем первый, и в том и в другом примере.
1. Первый пример.
Первый вариант кода:
For nCounter = 1 То 20
Object(nCounter).Property = ObjectDef.Property
Next nCounter
Второй вариант кода:
valProperty = ObjectDef.Property For nCounter = 1 To 20
Object(nCounter).Property = valProperty
Next nCounter
2. Второй пример.
Первый вариант кода:
For nCounter = 1 То 20
Object.Property = Object.Property & sValue
Next nCounter
Второй вариант кода:
For nCounter = 1 To 20
sValueAll = sValueAll & sValue
Next nCounter
Object.Property = sValueAll
- Для хранения одинаковых значений в процедурах вместо переменных типа Static используйте переменные уровня модуля, поскольку они работают быстрее.При этом, правда, текст кода приложения увеличивается за счет дублирования и становится менее читабельным и понятным.
- Для критичных по времени вычисления случаев используйте код процедур непосредственно в месте их выполнения взамен вызова этих процедур, который занимает определенное время. Правда при этом необходимо помнить, что размер кода увеличивается за счет дублирования кода процедур.
- Вместо переменных, насколько это возможно, используйте константы, поскольку значения констант включаются при компиляции в код приложения, а переменные каждый раз должны быть найдены в памяти и считаны, что, конечно, занимает определенное время.
Замечание
Оптимизация кода приложения, конечно, связана и с оптимизацией его размера. Как видно из некоторых способов оптимизации кода, размер кода либо увеличивается, либо уменьшается при оптимизации скорости приложения