Cтраница 1
Оптимизация кода, порожденного компиляторами, составляет предмет обсуждения многочисленных работ. [1]
Ключ / ор запрещает некоторые виды оптимизации кода, которые могут привести к потере точности. Процессоры Intel обычно хранят результаты операций с плавающей точкой в 80-разрядных регистрах, что превышает разрядность значений с двойной точностью. При сохранении результатов в памяти выполняется округление. С данным ключом на платформе IA-32 вещественные переменные не хранятся в регистрах, операции не оптимизируются, деление, например, не заменяется умножением на величину, обратную знаменателю. Не выполняется и перегруппировка операндов. При вычислении выражений используются все 80 разрядов, а при присваивании результата переменной с простой и даже с двойной точностью выполняется округление до 32 ( в первом случае) или до 64 ( во втором случае) разрядов. С ключом / Qop соблюдаются и некоторые другие условия. [2]
Многие компиляторы языков высокого уровня автоматически осуществляют оптимизацию кода, например исключение излишних команд и перенос команд, независимых от цикла, за его-пределы. [3]
Иногда выводятся информационные сообщения, содержащие предложения по оптимизации кода и сведения по оптимизации, выполненной компилятором. Обычно вывод таких сообщений отключен, но он может быть активизирован с помощью соответствующих ключей компиляции. [4]
Разработан новый компилятор, обеспечивающий исключение неиспользуемых фрагментов программы, улучшенную оптимизацию кода. Предусматриваются возможности использования переменных среды операционной системы для управления компиляцией, а также большой набор параметров управления режимами работы компилятора. [5]
Для обхода этих ограничений разработчики ряда компиляторов вынуждены были перекладывать на пользователя заботу об оптимизации кода программы. [6]
Компилятор может быть сконфигурирован так, чтобы выполнять оптимизацию вашего кода. Когда в разделе Code optimization ( Оптимизация кода) вкладки C оптимизация выключена ( выбрана радиокнопка None), компилятор не делает никаких попыток как-либо оптимизировать ваш код. [7]
К сожалению, использование абстрактных классов влечет за собой значительный дополнительный расход машинного времени при выполнении программы, поскольку каждый вызов виртуальной функции требует обращения к таблице указателей на функции-члены. Более того, компиляторы обладают намного меньшими возможностями в отношении оптимизации кода для абстрактных классов. Так как рассматриваемые в книге алгоритмы и структуры данных часто находятся в частях системы, критичных к производительности, возможно, упомянутая цена за гибкость, предоставляемую абстрактными классами, окажется слишком большой, чтобы ее платить. [8]
Наибольшее разнообразие типов данных в стандарте предусмотрено для представления целых чисел. Смысл применения широкого спектра целочисленных переменных заключается в первую очередь в оптимизации кода программы. Скорость вычислений зависит от того, как микропроцессор оперирует с переменными данного типа. [9]
Под оптимизацией в данном случае подразумевается повышение скорости работы функций и программ. Однако у MATLAB имеется и некоторая специфика, которую следует учитывать при оптимизации кода. [10]
Имеется довольно обширная литература по синтаксису и трансляции языков программирования. В двухтомнике Ахо и Ульмана [1972] достаточно полно представлены формальная математическая теория синтаксиса, методы грамматического разбора и оптимизации кода применительно к построению компиляторов. В работах Гриса [1971], Хопгуда [1969], Макки-мана и др. [1970] можно найти обсуждение методов компиляции, ориентированное на практическое приложение. [11]
Безусловно, оператор CASE слабее оператора IF, не имеющего подобных ограничений. Но формат CASE не только выразителен для программиста, но и более эффективен. Использование целочисленных констант позволяет транслятору выполнить оптимизацию кода, часто весьма существенную. [12]
Платой за динамические типы явля-ц Л ются действия по проверке типа на этапе исполнения. В этом случае транслятор может использовать эту информацию для оптимизации кода. [13]
Маклисп был также первой Лисп-системой, для которой создан хороший транслятор. Транслятор генерирует машинную программу, получившую имя LAP ( List Assembly Program), в форме списков. Это объясняется разумностью транслятора Маклиспа при обработке выражений и оптимизации кода. [14]
Фортран - язык, ориентированный на вычисления, а вычисления всегда связаны с массивами. Современные вычислительные средства, реализуя векторную модель выполнения операций на аппаратном уровне, позволяют рассматривать массив как единое целое. Средства Фортрана для работы с массивами соответствуют векторным представлениям вычислений; они не только удобны для программиста, но и дают дополнительные - по сравнению с циклами - возможности для оптимизации кода применительно к разным аппаратным платформам. [15]