2009-11-14 4 views
1

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

+0

Можете ли вы уточнить? Например, неясно, какие методы вы говорите. –

+1

Я не вижу здесь вопроса. – Novelocrat

ответ

1

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

2

G'day,

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

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

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

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

-1

IMHO, то, что нужно сделать, - это реализовать простые, очевидные оптимизации, а затем дать им отдохнуть. Конечно, очень интересно попытаться сделать странную и прекрасную оптимизацию, чтобы исправить вещи, которые пользователь мог бы просто кодировать немного лучше, но если вы действительно хотите попытаться очистить после плохого кодирования или плохого дизайна, пользователь всегда может обогнать вас , This is my favorite example.

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

0

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

Смежные вопросы