На главную страничку учебника Visual BasicОптимизация скорости Существует 3 типа скорости:
Мы с вами рассмотрим первый тип. Ниже я привёл данные для сравнения скорости выполнения некоторых операций. Я думаю эти данные пригодятся программистам на Visual Basic. Для сравнения времени на выполнение некоторой операции я использовал API функцию Windows - GetTickCount. Она возвращает количество милисекунд (1/1000 секунды), прошедших с момента запуска Windows. Разность показаний до выполнения некоторого кода и после и будет являться временем, которое ушло на выполнение этого кода. При вычислении времени брались средние значения. Общая схема тестирования была такова: записывались 2 куска кода, затем один из них закомментировывался и вычислялась скорость работы другого куска. Затем наоборот. Всё тестировалось на: Visual Basic 5 Ent. Ed. и машине Pentium 225 MMX с 81 RAM. Объявление API функции: Private Declare Function GetTickCount Lib "kernel32" () As Long 1. Возведение в степень Dim
ms As Long 2. Функции Mid и Mid$ Dim
ms As Long 3. Функции Left и Left$ Dim
ms As Long Вывод: используйте функции со знаком $. Функции без оного возвращают тип Variant, поэтому и работают медленнее. 4. Сравнение быстроты доступа к свойству и к переменной Dim
ms As Long Вывод: Когда вам нужно добраться к свойству в цикле, и которое не изменяется, то воспользуйтесь переменной! Присвойте ей значение до цикла. 5. Сравнение скорости Variant и Long перемынных Dim
ms As Long Вывод: Там, где это возможно, используйте подходящий для операции тип. В данном случае больше всего подходит тип Long. 6. Сравнение скорости работы строк фикс. длины и строк произв. длины Dim
ms As Long Вывод: Строковые переменные фикс. длины медленнее, чем произвольной. 7. ="" и len(...)=0 Dim
ms As Long Вывод: Для проверки строк на вшивость (""), используйте функцию Len. 8. Move и изменение Left,Top,Width и Height Dim
ms As Long Вывод: Для изменения положения или размеров формы используйте метод Move, он работает быстрее, тем более при изменении отдельных свойств форма будет проскальзывать по экрану. 9. Сравнение метода PaintPicture и API ф-ции BitBlt Dim
ms As Long Form1.PaintPicture
Picture1, 0, 0, 100, 100, _ BitBlt Form1.hdc,
0, 0, 100, 100, _ Вывод: API функции работают быстрее. И это факт. Так что там, где нужна скорость, на помощь приходят API функции. Примечание: Вообще-то здесь сравнение PaintPicture и BitBlt не совсем удачно, т.к. аналогом функции PaintPicture является API StretchBlt. Но скорость её работы в данном случае такая же, как и у BitBlt. 10. Visual Basic 5 vs Borland C++ Builder 4! Недавно я решил испробовать BC++4 на скорость, сравнив его с VB5. Результаты меня просто ошеломили! Мой брат, программирующий на BC++4 уже подумывает о переходе на VB5! Вот какие результаты я получил: 1. Скорость API функции SetPixel на заполнение формы (800x600) чёрными точками. Код на Borland C++ 4 Builder: WindowState
= wsMaximized; Код на Visual Basic 5: Form1.WindowState
= vbMaximized 2. Скорость вычисления синуса числа. (в VB Double, в BC++ float). Код на Borland C++ 4 Builder: int
a = GetTickCount(); Код на Visual Basic 5: Dim
a, c As Long Таблица с результатами:
На главную страничку учебника Visual Basic |