Оптимизация программного обеспечения
Прикладное ПО характеризуется качественными и количественными показателями такими как эффективность, сложность, мобильность, надежность.
Эффективность является количественной х-кой и оценивается 2мя критериями: процессорным временем выполнения и объемом используемой памяти
Эти критерии противоречат друг другу, так как сокращения одного можно добиться за счет увеличения другого. Выбор критерия зависит от характера решаемой задачи и ИС.
В системах реального времени в качестве основного критерия выступает время выполнения программы
Задача оптимизации программы по времени выполнения:
Необходимо преобразовать правильно работающую программу так, чтобы она выполнялась как можно быстрее и осуществляла те же функции, что и до преобразования
В современных системах прогр используются подсистемы оптимизации программ, включающие набор оптимизирующих процедур и трансляторов. Каждая из процедур выполняет равносильные преобразования программы и частично их оптимизирует
Набор процедур зависит от
Класса решаемых задач
Языка программирования
ОС
Особенности использ ЭВМ
Требования к оптимизации:
Сохранять функции , которые выполняла программа, т е производить равносильные преобразования
Не ухудшать качества ни одной программы
Улучшать качества некоторых программ, входящих в область применения процедур
Выполнение оптимизационных преобразований изменяет часть программы, что ухудшает ее качественные характеристики (ясность). Необходимо проводить оптимизацию только для отлаживания программы, котовой к выполнению.
Оптимизация процедур:
Оптимизация циклов
Опт. вычислительной информации
Опт.инструкций передачи упрвления
Опт.операций ввода/вывода
Опт.эффективности использования памяти
Оптимизация цикла
Большая часть процессорного времени приходится на выполнение циклов. Здесь может достигаться самый значительный выигрыш от оптимизации.
Цикл на Фортране:
Технология программирования поиска информации
Дополнение .Фибоначчиев поиск
При реализации этого метода для нахождения интервала поиска
используются числа Фибоначчи. Числа Фибоначчи получаются по рекуррентной формуле
F
= F
+ F
,
где r = 3, 4, 5,..., F
= 0, F
= 1.
В
методе Фибоначчи, так же как и в однородном
бинарном поиске, используются два
указателя: i - текущее положение и
величина H изменения, но они выбираются
в соответствии с числами Фибоначчи.
Значение i выбирается равным числу
Фибоначчи F
,
а Н - равным F
.
Алгоритм
Фибоначчиева поиска состоит из
предварительного этапа и 4 шагов.
Первоначально определяется такое число
M>=0, что N + M + 1 = F
,
где F
> N есть ближайшее к N число Фибоначчи.
Устанавливают i = F
,
P = F
,
H = F
.
Если первый проверяемый ключ K
< A, то устанавливают i = i - M.
Пример 1.
1 4 5 8 9 12
А = 8, N = 6.
=
=
8; M = 1; I = 5; m = 2; P=3; 9 > 8; m # 0; I=3;
P=2; m = 1; 8 > 5; P # 1; I = 4; P=1; m=0;
1 4 5 8 9 12; Удача!
Пример 3
1 4 5 8 9 12
А = 11, N = 6.
= = 8; M = 1; I = 5; m = 2; P=3; 9 < 11; m # 0; I=4;
1 4 5 8 9 12
I=6;P=1; m = 1; 1 4 5 8 9 12
I = 5; P=1; m=0;
1 4 5 8 9 12; Неудача!
