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

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

Упражнение 1:
Номер 1
Что из перечисленного относят к хорошему стилю программирования?

Ответ:

 (1) наличие безусловных переходов 

 (2) наличие операторов выхода из цикла 

 (3) модульность 

 (4) наличие меток 

 (5) короткие имена переменных 

 (6) ничего из перечисленного 


Номер 2
Что из перечисленного относят к плохому стилю программирования?

Ответ:

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

 (2) использование глобальных переменных 

 (3) длинные имена функций 

 (4) наличие операторов типа if 

 (5) ничего из перечисленного 


Номер 3
Каким образом сказывается использование глобальных переменных?

Ответ:

 (1) никаким образом 

 (2) остаётся слишком мало имён для локальных 

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

 (4) усложняется оптимизация 

 (5) зачастую усложняется читаемость кода 


Упражнение 2:
Номер 1
Что такое область видимости переменной?

Ответ:

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

 (2) область памяти, значения из которой может принимать указатель 

 (3) область значений переменной 

 (4) контекст, для которого переменная определена 

 (5) базовый блок, в котором определяется переменная 


Номер 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) переменная программы 

 (4) функция программы 

 (5) базовый блок 


Номер 2
Какую информацию отражают рёбра в графе вызовов?

Ответ:

 (1) вложенность синтаксических конструкций 

 (2) использование одной функции из другой 

 (3) вызовы программ 

 (4) вызовы системных утилит 

 (5) системные вызовы 


Номер 3
По какой причине граф вызовов может являться не полным?

Ответ:

 (1) используются библиотеки, свойства функций которых неизвестны 

 (2) используются переменные типа "указатель" 

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

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

 (5) неизвестна статистика по системным вызовам 


Упражнение 5:
Номер 1
Статический граф вызовов это

Ответ:

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

 (2) граф вызовов без учёта динамических переменных 

 (3) граф вызовов, построенный на этапе компиляции программы 

 (4) граф вызовов, построенный статистически 

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


Номер 2
Динамический граф вызовов это

Ответ:

 (1) граф вызовов, учитывающий переменные типа "указатель" 

 (2) граф базовых блоков (base block graph) 

 (3) граф вызовов, построенный при вызове программы 

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

 (5) статический граф, вершины которого – темпоральные данные 


Номер 3
Динамический граф вызовов

Ответ:

 (1) не даёт никаких преимуществ 

 (2) не учитывает данные типа static 

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

 (4) строится при вызове программы 

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


Упражнение 6:
Номер 1
Для включения межфайловой оптимизации необходимо использовать ключ компилятора

Ответ:

 (1) /Qipf 

 (2) /Qmulti-file 

 (3) /Qipo 

 (4) /Om 


Номер 2
Для выключения межпроцедурных оптимизаций используется ключ компилятора

Ответ:

 (1) /Qip- 

 (2) /Qip-disable 

 (3) /Qipo-disable 

 (4) /Qno-ipo 


Номер 3
Какой вид межпроцедурной оптимизации используется по умолчанию?

Ответ:

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

 (2) оптимизации без учёта переменных типа "указатель" 

 (3) оптимизации внутри одного файла 

 (4) многофайловый межпроцедурный анализ 


Упражнение 7:
Номер 1
Что такое анализ совмещений?

Ответ:

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

 (2) анализ, совмещённый с построением 

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

 (4) поиск функций с пересекающимся временем работы 

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


Номер 2
Совмещение (выявляемое при анализе совмещений) может возникнуть между

Ответ:

 (1) любыми переменными 

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

 (3) любыми функциями 

 (4) любыми программами 


Номер 3
Анализ указателей (points to analysis) это

Ответ:

 (1) и есть анализ совмещений 

 (2) часть анализа совмещений 

 (3) анализ индексных переменных 

 (4) анализ инвариантов циклов 

 (5) ничего из перечисленного 


Упражнение 8:
Номер 1
Что такое подстановка (inlining) ?

Ответ:

 (1) подстановка значений переменных 

 (2) подстановка общих подвыражений 

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

 (4) подстановка тел процедур 


Номер 2
Какие цели преследует подстановка (inlining)?

Ответ:

 (1) уменьшение накладных расходов 

 (2) упрощение анализа 

 (3) облегчение именования 

 (4) упрощение разыменования 

 (5) более короткие имена 


Номер 3
Какие минусы у подстановки (inlining) ?

Ответ:

 (1) увеличение кода 

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

 (3) увеличение времени работы 

 (4) повышение накладных расходов на вызов 


Упражнение 9:
Номер 1
Что понимается под устранением неоднозначности при работе с памятью?

Ответ:

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

 (2) выделение объектов, которые занимают слишком много памяти 

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


Номер 2
Что принимается во внимание при устранении неоднозначности при работе с памятью?

Ответ:

 (1) особенности языка 

 (2) Local Point To анализ 

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

 (4) анализ производительности приложения 

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


Номер 3
В каком случае невозможны перестановочные оптимизации?

Ответ:

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

 (2) если есть объекты, которые могут пересекаться по памяти 

 (3) если есть объекты, которые занимают слишком много памяти 


Упражнение 10:
Номер 1
Что делает опция  - anti-alias?

Ответ:

 (1) задействует правила ANTI aliasing в оптимизации 

 (2) убирает правила ANTI aliasing из оптимизаций 

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


Номер 2
Что требуют правила ANTI aliasing?

Ответ:

 (1) указатель может быть разыменован к объекту такого же типа 

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

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

 (4) указатель может быть разыменован к объекту совместимого типа 


Номер 3
Что объявляет атрибут restrict при объявлении указателя в языке С/С++?

Ответ:

 (1) произвольный указатель может ссылаться на память, на которую он указывает 

 (2) только указатель может ссылаться на память, на которую он указывает 

 (3) только указатель или выражение базирующееся на этом указателе может ссылаться на память, на которую он указывает 


Номер 4
Для каких целей используется прагма __declspec(align(n)) ?

Ответ:

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

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

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

 (4) Запрещает компилятору выравнивание массивов с менее чем n элементами 


Упражнение 11:
Номер 1
Как компилятор определяет случай, в котором желательно произвести подстановку?

Ответ:

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

 (2) только при помощи директив 

 (3) она производится всегда, если это не запрещено опциями компилятора 

 (4) существует эвристический метод, при помощи которого это определяется 

 (5) подстановка не осуществляется пока это не указано явно в тексте программы 


Номер 2
Можно ли влиять на процесс подстановки?

Ответ:

 (1) можно при помощи опций и текста программы 

 (2) можно только при помощи текста программы 

 (3) процесс подстановки можно только включить или выключить целиком из командной строки 

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


Номер 3
При анализе программы при помощи приложения VTune одна из функций отсутствует, по какой причине это может произойти?

Ответ:

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

 (2) функция была удалена в процессе подстановки 

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

 (4) это типичная ошибка глобальной области видимости 

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


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

Ответ:

 (1) ключ компилятора -Qinline<func> 

 (2) прагма #pragma inline перед телом функции 

 (3) ключевое слово forceinline в объявлении функции 

 (4) ключевое слово inline в описании функции 


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

Ответ:

 (1) #pragma forceinline перед определением 

 (2) #pragma forceinline перед вызовом 

 (3) #pragma inline перед определением 

 (4) #pragma inline перед вызовом 


Номер 3
Для отключения подстановки используется опция

Ответ:

 (1) /Qb<0> 

 (2) /Qnoinline 

 (3) /Qinline<0> 


Упражнение 13:
Номер 1
Что такое клонирование функций?

Ответ:

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

 (2) создание компилятором функции-клона, исполняемой только на встроенной видеокарте 

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

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


Номер 2
Что такое частичная подстановка функции?

Ответ:

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

 (2) подстановка, при которой определяется имя-указатель, которое содержит название подставленной функции 

 (3) использование оптимизаций базовых блоков без трансформации кода 

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


Номер 3
Какая межпроцедурная оптимизация используется в языке C++

Ответ:

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

 (2) деобъектизация 

 (3) девиртуализация 

 (4) отмена наследования 

 (5) деполиморфизм 




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