Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
161
Добавлен:
10.07.2016
Размер:
2.02 Mб
Скачать

40. Использование оптимизирующего компилятора.

Оптимизирующий компилятор - это тот, в котором используются различные методы получения более оптимального программного кода при сохранении его функциональных возможностей. Наиболее распространённые цели оптимизации - это сокращение времени выполнения программы, повышение производительности, экономия памяти, минимизация энергозатрат, уменьшение количества операций ввода-вывода и другие. Оптимизация может происходить неявно во время трансляции программы, но как правило считается отдельным этапом работы компилятора. Компоновщики так же могут выполнять часть оптимизирующей работы, таких как удаление неиспользуемых подпрограмм или их переупорядочивание. Различают низко- и высокоуровневую оптимизацию. Низкоуровневая оптимизация преобразовывает команду на уровне элементарных команд. Например, инструкций процессора конкретной архитектуры Высокоуровневая оптимизация осуществляется на уровне структурных элементов программы, таких как модули, функции, ветвление, циклы. Рассмотрим компилятор g++, который имеет несколько опций оптимизаций.

-O0

-O1

-O2

-O3

Каждая из этих опций включает флаги оптимизации и каждый из флагов представляет собой включение/выключение определённого вида оптимизаций. Каждая следующая опция будет компилировать дольше, но эффективнее. По умолчанию используется -O0. Кроме того, существует опция -Os, которая призвана уменьшить размер кода, и -Og, которая объединяет быструю компиляцию и удобную отладку.

41. Разработка универсального по. Основные приёмы разработки универсального по.

Под универсальностью понимают независимость программы от конкретного набора данных. Написать полностью универсальную программу невозможно. Условия универсальности:

1. Без необходимости не использовать константных значений.

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

2. Не использовать в программах стандартные имена устройств, имена объектов файловой системы.

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

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

5. Максимально использовать безтиповые указатели с дальнейшим их преобразованием в нужный тип

6. Создание и реализация полиморфных функций методом перегрузки.

7. Универсализации способствует создание собственных библиотек.

8. Использование при разработке ПО таблиц, таких как FAT, NTFS, таблица векторов прерываний, приоритетов и т.д.

42. Понятие отладки, основные стратегии проведения отладки.

Отладка - это этап разработки ПО, на котором локализуют и исправляют ошибки. Отладка и тестирование тесно связаны и вместе с тем это разные этатапы разработки ПО. Типичный цикл, который многократно повторяется включает:

1. Выявление и исправление ошибок программы

2. Тестирование ручное или автоматизированное и обнаружение факта ошибки программистом, тестировщиком или пользователем

3. Исправление ошибок, внесение в программу новой функциональности и снова переход на пункт 1

Существуют различные стратегии отладки:

1. Программирование без ошибок программы и ручное тестирование

2. Использование методов защитного программирования (протоколирование работы программы)

3. Инструментальная отладка, с помощью встроенного отладчика

4. Совмещение различным подходов.