Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы ТРПП экз.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
495 Кб
Скачать
☆

35Эффективность и оптимизация программ.

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

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

При этом постоянно приходится разрешать противоречие между временной эффективностью и эффективностью по памяти (ресурсам). Поэтому весьма важно, чтобы в спецификации качества были явно указаны приоритеты или количественное соотношение между показателями этих примитивов качества. Следует также иметь в виду, что разные программные модули по-разному влияют на эффективность ПП в целом: одни модули могут сильно влиять на временную эффективность и практически не влиять на эффективность по памяти, а другие могут существенно влиять на общий расход памяти, не оказывая заметного влияния на время работы ПП. Более того, это влияние (прежде всего, в отношении временной эффективности) заранее (до окончания реализации ПП) далеко не всегда можно правильно оценить

С учетом сказанного, рекомендуется придерживаться следующих принципов для обеспечения эффективности ПП:

  • сначала нужно разработать надежное ПП, а потом уж заниматься доведением его эффективности до требуемого уровня в соответствии с его спецификацией качества;

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

  • если эффективность ПП не удовлетворяет спецификации его качества, то найдите самые критические модули с точки зрения требуемой эффективности ПП; эти модули и попытайтесь оптимизировать в первую очередь путем их ручной переделки;

  • исключать многократные обращения к элементам массивов по индексам (особенно многомерных, так как при вычислении адреса элемента используются операции умножения на значение индексов), первый раз прочитав из памяти элемент массива, следует запомнить его в скалярной переменной и использовать в нужных местах;

  • избегать использования различных типов в выражении и т. п.

  • не следует заниматься оптимизацией модуля, если этого не требуется для достижения требуемой эффективности ПП.

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