Compiler performance is improved without compromising program correctness
by altering the commonly expected ordering that has been used in the past.
A more efficient memory image is provided which results in smaller stack
frames (activation records), less required heap space (static data memory
storage), improved variable access time due to better spacial locality,
and improved cache-hit ratios. An optimal size space storage allocation
technique optimizes the run time code, such that fewer instructions are
required per each data access. A smaller local area, which is part of the
activation record, is provided, such that there is a much greater level of
nesting and better cache locality. Improved alignment base sorting is
provided such that, based on alignment, the smallest stack frame possible
is provided. Profile based optimization, which gathers information about
the behavior of the program, is used to determine how best to order and
layout storage during the next storage allocation pass, such that items
that are accessed more often are allocated further up in the activation
record. Temporal locality is used to determine what variables are going to
be accessed in what order, where a graph that represents all of the
variables is built up. The graph is weighted by the number of times each
variable is accessed immediately before or after each other variable.
Allocated variables are then laid out in such an order that variables that
are accessed temporally close to each other are allocated on the same
cache line. Thus, when a cache line hosting a variable is brought into the
cache, the variables that are to be accessed next are also automatically
brought into the cache because they have been allocated on the same cache
line. Therefore, the need to retrieve additional cache lines is greatly
reduced. This results in a reduced number of cache misses. Static duration
storage is also used to relate to static defined data that is heap
allocated.
Составитель, котор представление улучшено без компрометируя правильности программы путем изменять общ предпологаемое приказывающ то был использован в прошлом. Более эффективное изображение памяти обеспечено приводит к в более малых рамках стога (показателях активации), меньше необходимо космос вороха (хранение памяти статических данных), улучшенный переменное время доступа должное к более лучшему spacial местообитанию, и улучшенные cache-hit коэффициенты. Оптимальный метод распределения хранения космоса размера оптимизирует Кодего времени бега, такое что немногие инструкции необходимы в каждый доступ данных. Обеспечена более малой местной областью, которая будет часть показателя активации, такие что будет очень большой уровень вложенности и более лучшего местообитания тайника. Улучшенный сортировать выравнивания низкопробный предусмотрен таким что, после того как я основана на выравнивании, обеспечена самая малая рамка стога по возможности. Профилируйте основанное оптимизирование, которое собирает информацию о поведении программы, использует для того чтобы обусловить как наиболее наилучшим образом к хранению во время следующего пропуска распределения хранения, такому заказа и плана что детали которые достиганы более часто размещайте более далее вверх в показателе активации. Височное местообитание использовано для того чтобы обусловить что перемеююые идут быть достиганным в что заказе, где диаграмма которая представляет вся из перемеююых построена вверх. Диаграмма утяжелена числом времен каждого переменного достигает immediately before или после переменное. Размещанные перемеююые после этого положены вне в такой заказ что перемеююые достиганы височно close to размещаны на такой же линии тайника. Таким образом, когда линия тайника хозяйничая перемеююый принесена в тайник, перемеююые которые должны быть достиганным затем также автоматически принесены в тайник потому что они были размещаны на такой же линии тайника. Поэтому, потребность retrieve дополнительные линии тайника больш уменьшена. Это приводит к в уменьшенном номере несоосности тайника. Статическое хранение продолжительности также использовано для того чтобы отнести к статическими определенными данными будут размещанный ворох.