как минимизировать время компиляции языка программирования? - PullRequest
7 голосов
/ 23 февраля 2009

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

Ответы [ 17 ]

0 голосов
/ 23 февраля 2009

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

  1. Сохраняйте грамматику простой. Запутанная грамматика увеличит ваше время компиляции.
  2. Попробуйте использовать параллелизм, используя многоядерный GPU или CPU.
  3. Оцените современный компилятор и посмотрите, какие узкие места и что вы можете сделать в своем компиляторе / языке, чтобы избежать их.

Если вы не пишете узкоспециализированный язык, время компиляции на самом деле не является проблемой ..

0 голосов
/ 23 февраля 2009

это зависит от того, на каком языке / платформе вы программируете. для разработки .NET минимизируйте количество проектов, которые есть в вашем решении.

0 голосов
/ 23 февраля 2009

Насколько это серьезный компилятор?

Если синтаксис не является достаточно сложным, синтаксический анализатор должен работать не более чем в 10-100 раз медленнее, чем просто индексирование символов входного файла.

Аналогично, генерация кода должна быть ограничена форматированием вывода.

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

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

0 голосов
/ 23 февраля 2009
  • Убедитесь, что все может быть скомпилировано в первый раз, когда вы пытаетесь его скомпилировать. Например. запретить пересылку ссылок.
  • Используйте грамматику без контекста, чтобы вы могли найти правильное дерево разбора без таблицы символов.
  • Убедитесь, что семантика может быть выведена из синтаксиса, чтобы вы могли создать правильный AST напрямую, а не путаться с деревом разбора и таблицей символов.
0 голосов
/ 23 февраля 2009

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

0 голосов
/ 23 февраля 2009

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

0 голосов
/ 23 февраля 2009

В C ++ вы можете использовать распределенную компиляцию с такими инструментами, как Incredibuild

...