Почему пакет GHC для Macports занимает так много времени для компиляции? - PullRequest
8 голосов
/ 01 июля 2010

А почему? Существует процесс начальной загрузки и компиляция реального процесса компилятора, но какая часть потребляет больше всего времени?

Ответы [ 4 ]

9 голосов
/ 01 июля 2010

С точки зрения Gentoo:

В Gentoo все компилируется. Что мы делаем для GHC, так это то, что мы, разработчики (включая неофициальных разработчиков, таких как я), компилируем новую версию GHC из более старой, чтобы создать двоичную загрузочную версию, а затем упаковываем ее и позволяем пользователям использовать ее для компиляции новой версии.

Из памяти компиляция двоичного файла может занять более чем вдвое больше времени (около 45 минут, чтобы использовать двоичный файл для компиляции новой версии на моем ноутбуке). Существуют некоторые различия (документация создается и поставляется вместе с двоичным файлом, а не каждый пользователь создает ее самостоятельно), но я не вижу, чтобы объяснить такую ​​большую разницу во времени. Фактический ebuild, используемый для сборки двоичного файла и для конечных пользователей, можно найти здесь (включение флага ghcbootstrap означает, что он создает двоичный файл, включение флага двоичного кода означает, что пользователи устанавливают и используют предварительно собранный двоичный файл, а не собирают GHC сами по себе): http://code.haskell.org/gentoo/gentoo-haskell/dev-lang/ghc/ghc-6.12.3.ebuild

Таким образом, я предполагаю, что это начальный процесс начальной загрузки, который занимает так много времени, если Macports действительно создает начальный двоичный файл начальной загрузки (особенно если он делает это с последнего выпуска C-only и загружает свой путь до версии, которую вы используете). на самом деле хочу установить).

4 голосов
/ 01 июля 2010

Здание GHC печально известно тем, что его берут навсегда. Я слышал ужасные истории о том, что на сборку из исходного кода ушло более 8 часов. Из того, что я понимаю, это в основном связано с тем, что стандартная сборка GHC пытается выполнить огромные объемы оптимизации, чтобы повысить собственную производительность во время выполнения. Даже с частично готовой системой (что, как я полагаю, обеспечивает macports), этот процесс может занять некоторое время из-за всех ссылок.

РЕДАКТИРОВАТЬ: см. Следующее http://hackage.haskell.org/trac/ghc/wiki/Building/Using#HowtomakeGHCbuildquickly

3 голосов
/ 01 июля 2010

Это может занять некоторое время. Когда я компилировал его на iBook G4, это занимало 7 часов. Даже на MacBook Pro с большим количеством оперативной памяти и быстрым процессором это может занять 2-3 часа.

2 голосов
/ 01 июля 2010

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

sudo port -v install [portfile]
...