реализация оптимизации компилятора - PullRequest
1 голос
/ 14 ноября 2009

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

Ответы [ 4 ]

2 голосов
/ 14 ноября 2009

G'day,

О какой области оптимизации вы говорите?

Оптимизация компилятора, такая как:

  • оптимизация цикла
  • оптимизация потока данных
  • статическая оптимизация на основе одного присваивания
  • оптимизация генератора кода
  • и т.д.
  • и т.д.

Или оптимизация производительности самого компилятора, то есть скорости, с которой он работает?

1 голос
/ 14 ноября 2009

Предполагая, что у вас есть компилятор для оптимизации, и если он не был написан вами, посмотрите документацию, чтобы увидеть, чего не хватает. В противном случае, если он был написан вами, вы можете начать с самого простого. Определение для самого простого будет зависеть от языка, используемого вашим компилятором. Или я что-то упустил?

0 голосов
/ 16 ноября 2009

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

0 голосов
/ 14 ноября 2009

ИМХО, нужно сделать простую, очевидную оптимизацию, а затем дать ей отдохнуть. Конечно, очень интересно попробовать сделать странные и замечательные оптимизации, чтобы исправить вещи, которые пользователь мог бы просто немного лучше кодировать, но если вы действительно хотите попытаться убрать после плохого кодирования или плохого дизайна, пользователь всегда может обогнать вас , Это мой любимый пример.

Мой любимый пример бездействующих компиляторов - это компиляторы Фортрана, где они идут на такую ​​длину, чтобы скремблировать код, чтобы сбить несколько гипотетических циклов, которые код практически невозможно отладить, и обычно счетчик программ находится там менее 1% времени, поэтому усилия тратятся впустую.

...