игра брюс 2048
Главная / Программирование / Оптимизация приложений с использованием компиляторов Intel / Тест 9

Оптимизация приложений с использованием компиляторов Intel - тест 9

Упражнение 1:
Номер 1
 В чем недостаток статического профилировщика

Ответ:

 (1) работа только со статическими переменными 

 (2) не обрабатывает переменные типа указатель 

 (3) не поддерживает типизацию в полном виде 

 (4) грубая оценка весов переходов 

 (5) необходимость повторного запуска перед выполнением 


Номер 2
 На основании какой информации статический профилировщик оценивает веса переходов

Ответ:

 (1) входные данные 

 (2) анализ базовых блоков 

 (3) межпроцедурный анализ 

 (4) инлайнинг-анализ 

 (5) статистика запусков 


Номер 3
 Статический профилировщик может использоваться

Ответ:

 (1) только для статически типизированных языков 

 (2) в языках без указателей 

 (3) для анализа без учета входных данных 

 (4) для сбора статистики по запускам 

 (5) для оценки статичности распределения памяти 


Упражнение 2:
Номер 1
 Преимущества динамического профилировщика 

Ответ:

 (1) не используется статистика 

 (2) более точная оценка весов переходов 

 (3) оценка динамичности участков кода 

 (4) большее количество возможных оптимизаций 


Номер 2
 Что требуется для динамической профилировки программы

Ответ:

 (1) набрать статистику запусков 

 (2) временно закомментировать все статические переменные в коде 

 (3) добавить в начало программы освобождение всей памяти из кучи 

 (4) выбрать наиболее часто используемые входные данные для программы 

 (5) проверить код на инлайнинг 


Номер 3
 Отличия динамического профилирования от статического

Ответ:

 (1) в более грубом предсказании переходов 

 (2) в наличии статистики 

 (3) в отсутствии статистики 

 (4) в том, что учитываются данные типа указатель  

 (5) в скоростном инлайнинге 


Упражнение 3:
Номер 1
 Когда требуются динамические структуры данных?

Ответ:

 (1) в случае, когда имеется очень часто изменяемый итератор цикла 

 (2) когда величина итератора может выходить за пределы типа данных  

 (3) для создания больших структур данных, размер которых не известен во время компиляции 

 (4) когда требуется в одной переменной хранить и строку и число 

 (5) когда отсутствует статистика запусков 


Номер 2
 В чем неудобства динамического выделения памяти

Ответ:

 (1) данные становятся фрагментированными 

 (2) динамические объекты не могут обмениваться информацией со статическими объектами 

 (3) нет возможности набрать статистику запусков 

 (4) пропадает детерминированность кода 

 (5) массивы попадают в более медленную область памяти 


Номер 3
 Динамическое выделение памяти

Ответ:

 (1) ведет к отказу от использования статистики запусков 

 (2) использует менеджер памяти  

 (3) используется для разделения блоков программы 

 (4) обязательно при обработке быстроизменяющихся переменных 

 (5) необходимо для хранения структурированных данных 


Упражнение 4:
Номер 1
 Выберите верные утверждения

Ответ:

 (1) количество регистров обычно превосходит количество переменных в программе 

 (2) для распределения регистров используется метод рисования 

 (3) одна из базовых задач кодогенератора – распределение регистров 


Номер 2
 Выберите верные утверждения

Ответ:

 (1) кодогенератор выравнивает базовые блоки в памяти 

 (2) кодогенератор помогает генерации исходного кода больших проектов 

 (3) кодогенератор выполняет специфические архитектурные оптимизации 

 (4) кодогенератор генерирует недостающие фрагменты функций 


Номер 3
 Выберите верное утверждение

Ответ:

 (1) кодогенератор вычисляет дистанции переходов 

 (2) кодогенератор генерирует код по репрезентативной выборке 

 (3) кодогенератор выполняет контроль динамической памяти 


Упражнение 5:
Номер 1
 При распределении регистров выполняется:

Ответ:

 (1) определение областей жизни переменных 

 (2) выделение наиболее значимых регистров 

 (3) сортировка регистров по размеру 

 (4) выделение области памяти для блока регистров 


Номер 2
 Граф несовместимости строится

Ответ:

 (1) в процессе распределения регистров 

 (2) для обратной кодогенерации 

 (3) только для некорректно определенного кода 

 (4) только для кода, который не проходит репрезентативную выборку 


Номер 3
 Что обозначают цвета в графе несовместимости?

Ответ:

 (1) наиболее нагруженные участки кода 

 (2) наименее совместимые функции программы 

 (3) распределение регистров 

 (4) арифметические и логические преобразования данных 


Упражнение 6:
Номер 1
 Для чего могут быть использованы зависимости по данным в процессе кодогенерации?

Ответ:

 (1) для составления недостающих участков кода 

 (2) для определения возможности переиспользования данных 

 (3) для выделения несовместимых функций в отдельный граф несовместимости 

 (4) для определения несоответствия кода репрезентативной выборке 


Номер 2
 Для чего используется планирование инструкций?

Ответ:

 (1) для предсказания вероятностей переходов 

 (2) для повышения инструкционного параллелизма 

 (3) для сравнения прохождения контрольных точек программы с запланированным временем 

 (4) для составления графа несовместимостей 


Номер 3
 Каким образом осуществляется планирование инструкций?

Ответ:

 (1) изменением порядка инструкций 

 (2) составлением вероятностного плана переходов 

 (3) составлением списка времен прохождения контрольных точек программы 

 (4) распределением инструкций внутри графа несовместимостей 


Упражнение 7:
Номер 1
За счет чего перестановка полей структуры может ускорить работу приложения?

Ответ:

 (1) упрощение циклических конструкций 

 (2) за счет огрубления результатов 

 (3) уменьшение промахов по кэшу 

 (4) уменьшение условных переходов 


Номер 2
Какие цели преследует разбиение структуры данных (structure splitting)?

Ответ:

 (1) вынос редкоиспользуемых полей 

 (2) разбиение на структуры, группированные по разным типам 

 (3) разбиение на структуры, используемые в разных базовых блоках 

 (4) разделение полей по признаку длины названия 


Номер 3
С какой целью производится удаление излишних ссылок (pointer chasing)?

Ответ:

 (1) лишние ссылки могут привести к неожиданному освобождению памяти 

 (2) процесс разыменования не всегда детерминирован, его лучше избегать 

 (3) каждое разыменование требует подгрузки структуры в память, что существенно для больших структур 

 (4) это нужно для только чтобы избежать лишних операций освобождения памяти 

 (5) удаление лишних ссылок относится только к стилю оформления программы, а не к скорости и компиляторной оптимизации 


Упражнение 8:
Номер 1
В чем особенность хранения списков в динамической памяти?

Ответ:

 (1) элементы могут быть расположены в памяти случайным образом 

 (2) элементы в любой момент могут быть уничтожены сборщиком мусора 

 (3) в списке должно быть больше пяти элементов 


Номер 2
Каким образом можно улучшить размещение элементов списка в динамической памяти

Ответ:

 (1) отказавшись от сборщика мусора 

 (2) при помощи инлайнинга 

 (3) при помощи контейнеров 

 (4) используя несколько процессоров 


Номер 3
Связанный динамический список хуже линейного потому что

Ответ:

 (1) снижается вероятность попадания в кэш при последовательном обходе элементов 

 (2) множество возможных типов данных меньше 

 (3) добавляются накладные расходы на хранение ссылки 

 (4) данные ссылок постоянно меняются, а элементы перемещаются друг относительно друга 


Номер 4
Статический список лучше динамического потому что

Ответ:

 (1) не требует накладных расходов по выделению памяти 

 (2) может содержать элементы произвольного размера 

 (3) моделируется на основе статистики 

 (4) может содержать данные типа "запись" 




Главная / Программирование / Оптимизация приложений с использованием компиляторов Intel / Тест 9