Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Эффективность или удобочитаемость?

Поиск

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

Удобочитаемость важнее эффективности.

Оптимизирующие компиляторы

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

Типы оптимизации компилятора:

1) низкоуровневая (машинно-зависивамая) — на уровне элементарных команд, например, инструкций процессора;

2) высокоуровневая (машинно-независимая) — на уровне структурных элементов программы, н-р, ветвления и циклы.

Оптимизация программ

Производится по двум критериям: время и память.

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

Стадии оптимизации по времени:

Сегментация программы — разбиение на подпрограммы.

Профилировка подпрограмм — определение процента времени выполнения отдельных подпрограмм.

Оценка возможных улучшений: не стоит улучшать не поддающиеся улучшению подпрограммы.

Для каждой подпрограммы вычисляется коэффициент улучшения = (процент времени × процент улучшения) / усилия; подпрограммы с большим значением коэффициента подлежат оптимизации в первую очередь.

Подходы к оптимизации: «чистка» и перепрограммирование.

Оптимизаци памяти

Экономное использование памяти почти всегда сопровождается увеличением времени работы программистов и времени выполнения программы.

Оверлейность — возможность перенесения подпрограмм в ОЗУ из другого типа памяти, что позволяет нескольким подпрограммам использовать одну область памяти. Недостаток — постоянное обращение к диску. Возможности оверлея доступны только при наличии вирт памяти.

Заголовки сообщений лучше хранить в оверлейном сегменте, т.к. используются редко.

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

Вычислительные составляющие

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

Условные операторы должны следовать с учетом вероятностей и частичных вычислений (a and b and c).

Операции ввода-вывода требуют много времени. Использование буферов позволяет сократить время операций ввода-вывода, но требуют для их организации дополнительную память.

Модульность — использование подпрограмм. Требуют времени на вызов, следует применять если код используется более чем в одном месте.


Отладка программ.

Отладка — этап разработки программы, на котором обнаруживают, локализуют и устраняют ошибки. Есть различные подходы и средства отладки; в качестве основного средства используются отладчики, которые включают в себя пользовательский интерфейс для пошагового выполнения программы: оператор за оператором, функция за функцией, с остановками на некоторых строках исходного кода или при достижении определённого условия.

Они также дают возможность отображения значений переменных. Отслеживать правильный ход программы можно расстановкой в критических её частях отладочных операторов вывода «внутренней» информации о программе. Вывод отладочных сведений в файл называется журналированием.



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 313; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.241.235 (0.006 с.)