SAS888
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору mp65 asbo прав. В VBA, для оптимизации времени выполнения кода, в каждом конкретном случае нужно применять различные методы для решения, казалось бы, одинаковых задач. Так, например, в случае с оператором If: если требуется провести несколько сравнений, то после выполнения условия потребуется вставлять оператор безусловного перехода на конец блока этих If-ов. Что есть не рационально и медленно. В то время, как оператор Select Case сравнивает до первого совпадения (остальные, следующие ниже, игнорирует). Поэтому, проводя тест на скорость, все будет зависеть от условий и требуемого результата. Нельзя однозначно утверждать, что If "быстрее", чем Select Case. Также, если, например, требуется проверить несколько условий, то существенно рациональнее использовать "кучу" вложенных If-ов, нежели применять And и Or в одном If-е. Т.к. в первом случае проверка будет происходить последовательно, до первого false. И если грамотно расставить порядок сравнений, то можно еще ускорить процесс. Во втором же случае, будут проверены все условия, затем применены все логические операции, и только после этого - результат. Еще совет по оптимизации скорости: Не используйте функции типа Left, Mid, Trim и т.п. без значка "$", т.к. они возвращают значение типа Variant. Обычные функции Left$ и Trim$ возвращают результат немедленно, без его неявного преобразования в Variant. | Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 05:55 17-08-2011 | Исправлено: SAS888, 06:02 17-08-2011 |
|