Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Основная часть Windows-приложений разрабатывается с графическим пользовательским интерфейсом и активно использует графические возможности компьютера. В этом случае при разработке приложения необходимо учесть пропускную способность системной шины и графической подсистемы компьютера. Практически все приложения активно используют ресурсы жесткого диска. В большинстве случаев производительность дисковой подсистемы оказывает значительное влияние на работу приложения. Если программа интенсивно использует ресурсы жесткого диска, например, часто выполняет запись- перемещение файлов, то при относительно медленном жестком диске неизбежно возникнут проблемы с производительностью.

Приведем другой пример. Преимущественное использование регистров центрального процессора может повысить производительность программы за счет уменьшения обмена по системной шине, как это случается при работе с оперативной памятью. Во многих случаях повысить производительность приложения можно путем кэширования данных. Это может помочь при дисковых операциях, работе с мышью, устройством печати и т. д.

Если вы разрабатываете коммерческое приложение, то обязательно выясните, с какой наихудшей аппаратной конфигурацией будет работать ваша программа. Все мероприятия по оптимизации проводите с учетом именно такой конфигурации аппаратных средств.

Оптимизация с использованием средств языка высокого уровня

Использование такого метода оптимизации обычно связано с анализом программного кода на предмет выявления узких мест (bottlenecks) в процессе функционирования приложения. Обычно точки, в которых программа значительно замедляет работу, выявить не так просто. В этом разработчику могут помочь специальные программы, называемые профайлерами (profiler). Их назначение — определить производительность приложений, помочь при отладке и выявить точки программы, в которых производительность падает.
Одной из наилучших программ этого класса является Intel VTune Performance Analyzer. Можно рекомендовать использовать именно эту программу для отладки и оптимизации приложений.
Встроенные средства отладки имеются и в языках высокого уровня. Современные компиляторы позволяют обнаруживать ошибки, однако они не предоставляют никакой информации об эффективности выполнения того или иного участка программы. Вот почему желательно иметь под рукой какой- нибудь хороший профайлер.

Многие программисты предпочитают вести отладку приложений вручную.
Это не самый худший вариант, если вы хорошо представляете себе работу приложения. В любом случае, как бы вы не проводили отладку, полезно обратить внимание на некоторые моменты, влияющие на производительность работы приложения:
• количество вычислений, выполняемых программой. Одним из условий повышения производительности приложения является уменьшение объема вычислений. Работающая программа не должна вычислять одно и то же значение дважды. Вместо этого она должна рассчитать каждое значение один раз и сохранить его в памяти для повторного использования. Существенного повышения быстродействия приложения можно добиться, если преобразовать математические вычисления в обращения к таблицам, которые могут быть сгенерированы заранее;
• использование математических операций. Любое приложение, так или иначе, использует математические операции. Анализ эффективности вычислений довольно сложен и в каждом конкретном случае зависит от многих факторов. Выигрыш в производительности может дать использование более простых арифметических операций для вычислений. Везде, где только можно, операции умножения и деления следует заменить соответствующим блоком команд сложения/вычитания. Если в программе используются операции с плавающей точкой, то старайтесь не использовать команды обработки целых чисел, т. к. они замедляют работу приложения.
Еще один нюанс: используйте по возможности как можно меньше операций деления. Производительность заметно падает и при использовании математических операций в циклах. Операции умножения на степень двойки можно заменить командами сдвига влево;

• использование циклических вычислений и вложенных структур. Речь идет об использовании циклов WHILE, FOR. SWITCH, I F . Циклические вычисления упрощают структуру программы, но уменьшают производительность. Внимательно просматривайте программный код на предмет поиска вложенных вычислений с использованием циклических структур.


 
 
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru