12.3. Размер кода

12.3. Размер кода

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

Рассмотрим целевую машину как иерархию типов памяти, упорядоченных по удаленности от процессора. Она включает в себя собственные регистры процессора; его конвейер инструкций; кэш первого уровня (L1); кэш второго уровня (L2); вероятно, кэш третьего уровня (L3); оперативная память (которая среди специалистов старой школы Unix до сих пор изящно называется основой (core)); и дисковые накопители, на которых располагается область подкачки. Такие технологии, как SMP, кластеры с общей памятью и технология доступа к неоднородной памяти (Nonuniform Memory Access — NUMA) добавляют больше уровней в картину, но только расширяют общий разброс.

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

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

"Малое прекрасно" — эта идея, следовательно, является более убедительной, чем когда-либо, особенно в отношении центральных структур данных, которые должны располагаться в как можно более быстром кэше. Данная рекомендация также применима и к коду; средняя инструкция затрачивает больше времени при загрузке, чем при выполнении.

Это меняет некоторые традиционные советы на прямо противоположные. Оптимизация компилятора, подобная развертке цикла, которая освобождает сравнительно дорогие машинные инструкции в обмен на увеличение общего размера кода, может оказаться более нецелесообразной. Другим примером является предвычисле-ние небольших таблиц — например, таблица значений функции sin(x) от величины угла для оптимизации вращения в ядре 3D графики потребует на современной машине 365x4 байт. До того как процессоры стали быстрее, чем память, чтобы требовать кэширования, это было очевидной оптимизацией скорости. В настоящее время, возможно, быстрее будет пересчитывать результаты каждый раз, чем расплачиваться за дополнительные .потери кэша, вызванные хранением таблицы.

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Линейный размер

Из книги AutoCAD 2009 автора Орлов Андрей Александрович

Линейный размер Для создания вертикальных и горизонтальных размеров предназначена одна команда – DIMLINEAR. Она измеряет расстояние между двумя определяющими точками и позволяет вам выбрать местоположение размерной линии. Команде DIMLINEAR соответствует кнопка Linear (Линейный),


Продленный размер

Из книги AutoCAD 2009 для студента. Самоучитель автора Соколова Татьяна Юрьевна

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


Размер радиуса

Из книги AutoCAD 2009. Начали! автора Соколова Татьяна Юрьевна

Размер радиуса Команда DIMRADIUS, позволяющая построить радиус окружности или дуги, вызывается из падающего меню Dimension ? Radius или щелчком на пиктограмме Radius на панели инструментов Dimension.Запросы команды DIMRADIUS: Select arc or circle: – выбрать дугу или круг Dimension text = измеренное


Параллельный размер

Из книги Word 2007.Популярный самоучитель автора Краинский И

Параллельный размер С помощью команды DIMALIGNED создается размер, параллельный измеряемой линии объекта; это позволяет выровнять размерную линию по объекту. Размер создается подобно горизонтальному, вертикальному и повернутому, при этом размерная линия расположена


Размер диаметра

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

Размер диаметра Команда DIMDIAMETER строит диаметр окружности или дуги. Команда вызывается из падающего меню Dimension ? Diameter или щелчком на пиктограмме Diameter на панели инструментов Dimension.Запросы команды DIMDIAMETER:Select arc or circle: – выбрать дугу или кругDimension text = измеренное значениеSpecify


Размер бумаги

Из книги AutoCAD 2010 автора Орлов Андрей Александрович

Размер бумаги Чтобы задать размер страницы, перейдите на вкладку Разметка страницы, в группе Параметры страницы щелкните на кнопке Размер и выберите в появившемся списке нужный вариант (рис. 10.18). Рис. 10.18. Меню кнопки РазмерКак правило, печатают на листах стандартного


12.3. Размер кода

Из книги AutoCAD 2009. Учебный курс автора Соколова Татьяна Юрьевна

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


Продленный размер

Из книги AutoCAD 2008 для студента: популярный самоучитель автора Соколова Татьяна Юрьевна

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


Параллельный размер

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Параллельный размер С помощью команды DIMALIGNED создается размер, параллельный измеряемой линии объекта; это позволяет выровнять размерную линию по объекту. Размер создается подобно горизонтальному, вертикальному и повернутому, при этом размерная линия расположена


Размер радиуса

Из книги Антимозг [Цифровые технологии и мозг] автора Шпитцер Манфред

Размер радиуса Команда DIMRADIUS , позволяющая построить радиус окружности или дуги, вызывается из падающего меню Dimension ? Radius или щелчком на пиктограмме Radius на панели инструментов Dimension.Запросы команды


Размер диаметра

Из книги Графология XXI века автора Щеголев Илья Владимирович

Размер диаметра Команда DIMDIAMETER строит диаметр окружности или дуги. Команда вызывается из падающего меню Dimension ? Diameter или щелчком на пиктограмме Diameter на панели инструментов Dimension.Запросы команды


Размер диаметра

Из книги Все секреты Minecraft автора Миллер Меган

Размер диаметра Команда DIMDIAMETER строит диаметр окружности или дуги. Команда вызывается из падающего меню DimensionDiameter или щелчком на пиктограмме Diameter на панели инструментов Dimension.Запросы команды DIMDIAMETER:Select arc or circle: – выбрать дугу или кругDimension text = измеренное значениеSpecify


Размер страницы и размер кэша по умолчанию

Из книги автора

Размер страницы и размер кэша по умолчанию При восстановлении вы можете изменить размер страницы, включив в команду переключатель -р[age_size], за которым следует целое число, задающее размер в байтах. Допустимые размеры страниц см. в табл. 38.2.В этом примере gbak восстанавливает


Размер головного мозга и размер социального окружения

Из книги автора

Размер головного мозга и размер социального окружения Дискуссии по поводу взаимосвязи между размером головного мозга какого-либо организма и размером группы, к которой этот организм принадлежит, ведутся нейробиологами уже давно. При этом взаимосвязь с социальной


10. Размер букв

Из книги автора

10. Размер букв Признаки слева направо (рис. 190):• размер букв большой;• размер букв маленький;• размер букв очень большой;• размер букв очень маленький; Рис. 190• размер букв


Размер дома

Из книги автора

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