Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
The trick
Модератор
7365 / 2583 / 755
Регистрация: 22.02.2013
Сообщений: 3,799
Записей в блоге: 76
11.01.2015, 13:43 0

[Статья] Как заставить Вашу программу на VB работать быстрее?

11.01.2015, 13:43. Просмотров 8216. Ответов 20
Метки (Все метки)

Ответ

Цитата Сообщение от Dragokas Посмотреть сообщение
5. Установите у себя 5 или 6 версию VB. Программы, откомпилированные в VB с опцией Native, конечно, работают медленнее, чем программы, написанные на C++ или Delphi, но они намного быстрее, чем неоткомпилированные программы, создаваемые более ранними версиями VB.
Это неверно.
Цитата Сообщение от Dragokas Посмотреть сообщение
Распаковывайте графику. Всегда пользуйтесь файлами с расширением .bmp, а не запакованными .jpg или .gif файлами. Эти файлы хранятся в программе в запакованном виде, и требуется дополнительное время для их раскрытия.
Это было актуально может в 98 году, но сейчас уже нет. При использовании bmp размер файла будет расти очень сильно.
Цитата Сообщение от Dragokas Посмотреть сообщение
Используйте Set your_form = Nothing, когда данная форма вам больше не нужна. Это экономит память и может сэкономить массу времени, когда у вас много форм, которые вы должны хранить в памяти.
Для выгрузки формы целесообразнее использовать Unload.
Цитата Сообщение от Dragokas Посмотреть сообщение
Заранее определяйте массивы максимально возможного размера, чтобы не пришлось динамически выделять под них память в процессе выполнения программы - ReDim.
Мой совет - выделять память порциями по 100 - 10000 элементов в зависимости от задачи.
Цитата Сообщение от Dragokas Посмотреть сообщение
Если вам нужно обнулить все элементы динамического массива, используйте ReDim. Это займет больше времени, чем оставить массив в покое, но это гораздо быстрее, чем обнуление элементов массива в цикле.
Цитата Сообщение от Dragokas Посмотреть сообщение
Если вам нужно обнулить все элементы массива фиксированной длины, объявленного с применением Dim, используйте Erase. Это уничтожит динамический массив, но обнулит массив фиксированной длины.
Еще быстрей будет RtlZeroMemory.
Цитата Сообщение от Dragokas Посмотреть сообщение
Пользуйтесь функциями API MemCopy или RtlMoveMemory для копирования массивов вместо копирования их элементов в цикле.
Это плохой совет, т.к. в массивах может быть что угодно и строки и объекты и структуры со строками и объектами, массивами.
Цитата Сообщение от Dragokas Посмотреть сообщение
Всегда указывайте определенные типы объектов вместо объявления переменной типа Object. Будьте настолько точны, насколько это возможно.
Для таких целей обычно придумывается интерфейс, вместо медленного IDispatch (Object).
Цитата Сообщение от Dragokas Посмотреть сообщение
Объявляйте объект и выделяйте под него память на отдельных строках кода. Строка "Dim obj As New MyClass" выполняется медленнее, чем две отдельных строки "Dim obj As MyClass" "Set obj = New MyClass".
Также добавлю что это не одно и тоже как многие думают.
Цитата Сообщение от Dragokas Посмотреть сообщение
Используйте With для длинных последовательностей указаний свойств объектов, повторяемых несколько раз. Это выполняется быстрее, чем если вы повторите серии объектов в каждой отдельной команде.
Неправда, разницы в скорости нет.
Цитата Сообщение от Dragokas Посмотреть сообщение
Когда у вас в программе множество динамически меняющихся картинок, поместите их все в невидимые Images на первую загружаемую форму, а затем загружайте их по мере необходимости. Никогда не работайте с файлами.
Тогда уж загружать предварительно в массив StdPicture'ов, это будет еще быстрее. А читать можно к примеру из PropertyBag'а.
Цитата Сообщение от Dragokas Посмотреть сообщение
Распределяйте функции и процедуры по модулям. Когда одна процедура вызывает другую, загружается весь модуль второй процедуры. Если одна процедура вызывает несколько процедур из разных модулей, все эти модули загружаются в память. Если же все процедуры находятся в одном модуле, они все загружаются одновременно.
Неправда, EXE проецируется полностью и ничего не подгружается. Если речь идет о работе в IDE, то да, только не загрузка а компиляция.
Цитата Сообщение от Dragokas Посмотреть сообщение
Не тратьте память бездумно.
Странно такое слышать после
Цитата Сообщение от Dragokas Посмотреть сообщение
Заранее определяйте массивы максимально возможного размера
Цитата Сообщение от Dragokas Посмотреть сообщение
Не нумеруйте каждую строку вашего кода, поскольку нумерация строк увеличивает размер вашей программы.
Неправда.
Цитата Сообщение от Dragokas Посмотреть сообщение
Убирайте неиспользуемые переменные и участки кода, так как они остаются в программе, и увеличивают как ее размер, так и выделяемую под нее оперативную память.
Неправда. Неиспользуемые переменные и процедуры вообще не попадают в скомпилированный файл (не говорю о методах).
Цитата Сообщение от Dragokas Посмотреть сообщение
Используйте функции API FindFirstFile, FindNextFile, и FindClose для быстрого поиска файлов и папок. Но помните, что не всегда обращение к функциям API быстрее. Это всегда сложнее, и иногда весьма рискованно, чем применение стандартных функций VB.
Если речь не идет о юникодных каталогах, то смысла нет.
Цитата Сообщение от Dragokas Посмотреть сообщение
Функции UCase$ и LCase$ позволяют вам осушествлять сравнения вне зависимости от регистра текста, но нижеследующие функции API гораздо быстрее:
Нужно использовать StrComp.
Цитата Сообщение от Dragokas Посмотреть сообщение
Например, этот код:
Visual Basic
1
2
3
4
5
Xsquare = x * x
Ysquare = y * y
a = 2 * Xsquare + 3 * Ysquare
b = 3 * Xsquare + 5 * Ysquare
If a + b > 50 Then ...
выполняется быстрее, чем следующий:
Visual Basic
1
2
3
If 2 * x * x + 3 * y * y + _
3 * x * x + 5 * y * y > 50 _
Then ...
Неправда, VB6 оптимизирует выражения.

Вернуться к обсуждению:
[Статья] Как заставить Вашу программу на VB работать быстрее?
6
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2015, 13:43
Готовые ответы и решения:

Как заставить программу работать с консолью?
Как сделать что бы моя прога работала с консолью(то есть могла посылать запросы...

Как заставить программу работать через прокси?
Кто нибудь имеет примерчик как заставить готовую прогу (типа чата) работать с...

Как заставить программу, написанную на VB6 работать вэ VB5?
Esli kto znaet kak zastavit' programmu, napisanuu na VB6 rabotat' v VB5,...

Как заставить работать РС динамик из VB
Как ?

как файл *.exe заставить работать
ЗДраствуйте! Проблема вот в чем : прога написана на VB6 , exe-файл нужно...

20
Другие темы раздела
Visual Basic [Статья] Производительность при работе со строковыми функциями http://www.cyberforum.ru/visual-basic/thread1348796.html
http://www.aivosto.com/vbtips/stringopt.html (англ.)
Visual Basic Как из программы управлять другой, уже запущенной программой Добрый день всем! Просьба не пинать если эта тема уже была.. Пишу Loader на VB 6. функции: 1. Проверка путей, файлов + 1. Копирование набора файлов "туда" + 2. запуск приложения "A" + ... http://www.cyberforum.ru/visual-basic/thread1348179.html
Visual Basic Найти минимальный элемент L-того столбца матрицы
В самостоятельных работах размерность массивов и значения переменных задавать с TextBox, данные генерировать по образцу. В массиве действительных чисел A(n,m): Найти минимальный элемент L-того...
Visual Basic Определить количество положительных и отрицательных элементов в каждом столбце матрицы
Объясните, пожалуйста. С двумерными массивами проблема(( ничего не получается Найти номер столбца, сумма элементов которого минимальна Определить количество положительных и отрицательных элементов...
Visual Basic Найти столбец матрицы, сумма элементов которого минимальна http://www.cyberforum.ru/visual-basic/thread1346488.html
ВВести массив a(n,m). найти столбец, сумма элементов которого минимальна в чем ошибка? Dim a(5, 5), s(5) Private Sub Command1_Click() n = 0 'èíäåêñû ýëåìåíòà tabindex â ìàññèâå òåêñòîâûõ...
Visual Basic Задание массива с индексом от 1 до k Задать массив A(n), n=k+m. Элементы массива с индексом от 1 до к - члены натурального ряда кратные 2, остальные - кратные 5. Найти сумму и произведение элементов массива и частное от деления суммы на... подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru