LINUX.ORG.RU
ФорумTalks

Libxml2 - набор гигантских файлов.


0

1

Поставил я себе во флаги --param ggc-min-expand=0 --param ggc-min-heapsize=8192 , и пересобираю gentoo system потихоньку, почти 4 дня.

И тут на libxml2 смотрю - cc1 аж 150 минут (!) думал над файлом. Посмотрел размер файла - 800 кб. Восьмьсот килобайт. Сишного кода с комментариями. И он там не один такой. Пожалуй, ggc-min-heapsize надо было побольше поставить..... Зато даже под конец компиляции virt для cc1 не вылез за пределы 30 Мб, а res - за 24 мб.

Но - 800+ килобайт КОДА .... я просто сражён на повал. Даже в ffmpeg такого безобразия нету:

du -h source/mplayer/ffmpeg/libavcodec/dsputil.c
164K source/mplayer/ffmpeg/libavcodec/dsputil.c


du -h source/mplayer/ffmpeg/libavcodec/mpegvideo_enc.c
144K source/mplayer/ffmpeg/libavcodec/mpegvideo_enc.c

А это чудо ...
http://svn.gnome.org/viewvc/libxml2/trunk/xmlschemas.c?view=log
File length: 816925 byte(s)

Будет кстати забавно, если portage отфильтрует эти параметры для того компонента, которому они предназначались : gсc и его жадному до памяти genattrtab.

Да, компилится оно на mips r5k, 180 Mhz. На виртуальных хостингах (откуда ноги у конкретных значений и растут, как я понял) наверное всё гораздо быстрее.

В общем, если и сам gcc параметры эти использует при своей компиляции - это будет очень здорово, значит даже относительно слабая машина (по всем параметрам сразу - ЦПУ, память, диск) как минимум в состоянии скомпилировать даже большой С проект. Я уж опасался, что на 64 Мб gcc4 вообще не жилец. Оказалось, его просто подтюнить надо. Хотя наверняка узнаем только завтра.

★★★★★

Последнее исправление: Andrew-R (всего исправлений: 1)

http://svn.gnome.org/viewvc/libxml2/trunk/testapi.c?view=log
Больше мегабайта :(

1423882 byte(s)

Ну и ладн, надеюсь подобные файлики всё же редкость. Хотя если нечто подобное живёт например в Qt4 ... ТО я пожалуй поостерегусь выставлять такие же параметры для g++ (как изначально хотел)

Andrew-R ★★★★★
() автор топика

А прикинь как ты будешь компилить код на С++ с кучей шаблонов

thesame ★★★★
()
Ответ на: комментарий от Andrew-R

testapi.c: Automatically generated by gentest.py from libxml2-api.xml

А вот xmlschemas.c - да, ручная работа.

hdfan2
()
Ответ на: комментарий от PayableOnDeath

Оно до сих пор ... компилится. Virt/res было до 40/38 Мb, сейчас меньше (37/31).

Под впечатлением 800 минутной компиляции наваял строчку, после пяти минут чтения манов:


find путь -name \*.c* -print | xargs /usr/bin/du -h | sort -h | less

В принципе и в ядре, и в mesa/xserver и в cairo есть уже файлики под 600 Кб.

В «лёгком» КДЕ3 есть и под 4 Мб
3,9M /mnt/hdd1/src/kdepim-3.5.10/kresources/groupwise/soap/soapC.cpp


Так что флаги были срочно поменяны на --param ggc-min-expand=30 --param ggc-min-heapsize=16384

Но ушедшему поезду (запущенному компилятору) это уже не поможет ....

Andrew-R ★★★★★
() автор топика
Ответ на: комментарий от Andrew-R

Ура, оно закомпилировалось (этот громадный автосгенерированный файл). Надо будет на более быстром десктопе тщательнее проверить эффект этих флагов, пока, если не считать gcc testsuit громадных С файлов нашлось (больше 1 мб) не так уж много, по крайней мере в NetBSD (давным-давно кстать дерево не обновлял ...)

Andrew-R ★★★★★
() автор топика
Ответ на: комментарий от isden

Места мало, на десктопе.

Максимум 1 Гб, да и тот на разделе куда и так NFS сервер смотрит ....

Хотя конечно пора. Правда, сейчас десктоп занят починкой КДЕ, компиляцией его тобиш, благо предыдущую я убил неосторожным rm (libxcb-xlib.so.0 до какого-то момента присутствовал в моей Слакваре, потом я его после ручного апгрейда Хов прибил - вот и повод для некоторой перекомпиляции появился... так что прямо сейчас лишняя нагрузка в виде кросс-компилера не нужна.)

Хотя если прибить тут Х сервер, с Мозиллой и композитингом - сразу станет процентов на 40 побыстрее. Но постить с lynx я пока не привых.

Andrew-R ★★★★★
() автор топика

>--param ggc-min-expand=0 --param ggc-min-heapsize=8192

у вас 32 Мб на VPS ? увеличьте значение, пока RSS не будет около 70-80% доступной для VPS памяти, иначе собирать будет очень долго, и уж тем более если файлы с исходниками большие.
А еще луше собрать то что собираете используя distcc , на другой машине, где нормальный обьем памяти

/// прочитала про mips, поставьте ggc-min-heapsize=16384 или можно даже чуть больше

и наверное стоит подумать о кросс-комиляции....

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

PS: у GCC есть эвристика по определению параметров ggc, если машина не VPS и вся память и свап реальны, лучше вообще этот параметр не задавать, просто на OpenVZ/Virtuozzo рапортуется больше памяти, чем на самом деле будет доступно, вот GCC и вылетает, если ему не ограничивать, если вся память реальна - пусть компилит с автоопределением.

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Своп по сети я не осилил, своп на винт не хочу (Irix установленный запороть могу - а он мне ещё пригодится, может быть).

На 256 Мб перекомпиляция самого гцц по самому-самому краю ходит, видимо из-за постоянной подкачки страниц через NFS трафик между машинами был 5 Мб/с в течение часов, хотя как ни удивительно - сетевухи выдержали.

Andrew-R ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.