make, и все такое

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Threaded View
    Hello, All!

В очередной раз убеждаюсь, что описываемые тут механизмы преназначены для
решения надуманных проблем, которые искуственно создаются пользователями самих
механизмов. Был проект - 15 файлов. Собирался 8 сек целиком и около 5сек - make
на некоем случайно измененном файле. Я подумал, и решил совокупить файлы по
некоторым признакам, в результате проект стал занимать 5 файлов. т.е. число
файлов уменьшено ровно в 3 раза, объем же сократился незничительно - 2-3%. И
что-бы вы думали - build all 3 секунды, т.е. полюбому быстрее чем make на 15
файлах! Резюме - при уменьшении числа файлов в 3 раза скорость сборки
возрастает более чем в 2 раза. Причем скорость make намного не возрасла,
поскольку линковка все равно время отжирает глобально, make занимает 2c чем-то
cек. Вобщем ничего тут удивительного, компиллер полтора мега, пока его в память
загрузишь с диска, пока проинитишь, времени столько ухлопается, что глядишь
парсинг текста уже станет не такой сложной задачей.


  WBR!  Maxim Polyanskiy.


make, и все такое
Привет, Maxim !


 14 Feb 05 , 23:36  Maxim Polyanskiy писал к All:

 MP> В очередной раз убеждаюсь, что описываемые тут механизмы преназначены
 MP> для решения надуманных проблем, которые искуственно создаются
 MP> пользователями самих механизмов. Был проект - 15 файлов. Собирался 8
 MP> сек целиком и около 5сек - make на некоем случайно измененном файле. Я
 MP> подумал, и решил совокупить файлы по некоторым признакам, в результате
 MP> проект стал занимать 5 файлов. т.е. число файлов уменьшено ровно в 3
 MP> раза, объем же сократился незничительно - 2-3%. И что-бы вы думали -
 MP> build all 3 секунды, т.е. полюбому быстрее чем make на 15 файлах!
 MP> Резюме - при уменьшении числа файлов в 3 раза скорость сборки
 MP> возрастает более чем в 2 раза. Причем скорость make намного не
 MP> возрасла, поскольку линковка все равно время отжирает глобально, make
 MP> занимает 2c чем-то cек. Вобщем ничего тут удивительного, компиллер
 MP> полтора мега, пока его в память загрузишь с диска, пока проинитишь,
 MP> времени столько ухлопается, что глядишь парсинг текста уже станет не
 MP> такой сложной задачей.

А почему вы пробовали на 15 файлах, а не на одном?

.                                                С уважением, Hикита.
... нелысый пpогpаммист без агpессивного кота

Re: make, и все такое
    Hello, Arcady!

Чет Фев 17 2005, Arcady Schekochikhin писал к Maxim Polyanskiy по  поводу "Re:
make, и все такое."
 >> А вы дяденька нам раскажите. Компилятор меньше мега не весит, а то и
 >> 2.
 AS> Заодно советую почитать книжки где рассказывается об отличиях в
 AS> устройстве ОС и винды.
Отличия ОС от винды в том, что создатели ОС х сосут и оно никому не надо а
создатели винды, даже в ОЕМ варианте свой хлам дешевле $110 не продают, да и
денег у них куры не клюют.
 AS> Польза будет несомненная.
Слил.

  WBR!  Maxim Polyanskiy.


make, и все такое
Hello Maxim.

18 Feb 05 00:41, you wrote to Arcady Schekochikhin:

 MP> Отличия ОС от винды в том, что создатели ОС х сосут и оно никому не
 MP> надо а создатели винды, даже в ОЕМ варианте свой хлам дешевле $110 не
 MP> продают, да и денег у них куры не клюют.

Создатели ОС продают свою ОС гораздо дороже $110 (даже свободных вариантов этой
ОС меньше $100 немного, да и те российские). Денег у них меньше, чем у
микрософт, но развлечений они могут себе позволить не меньше.

ps: Про распределение памяти не буду говорить, не експерт.

Alexey


Re: make, и все такое
Привет Denis!

16 Feb 05 16:51, Denis Y. Borisov писал Arcady Schekochikhin:

 DB> Make AFAIK не является многопоточным приложением.

    GNU make является. Смотри опцию -j.

Всего наилучшего,                                 [Team PCAD 2000]
Алексей М.
... Даже лошадь Пржевальского может быть собакой Павлова.

Re: make, и все такое
Quoted text here. Click to load it

Процессы - не потоки.

Re: make, и все такое
Привет Dmitry!

20 Feb 05 17:16, Dmitry Fedorov писал Alex Mogilnikov:

 >>  DB> Make AFAIK не является многопоточным приложением.
 >>     GNU make является. Смотри опцию -j.

 DF> Процессы - не потоки.

    Какая разница? Главное, что он может компилировать много файлов
одновременно.

Всего наилучшего,                                 [Team PCAD 2000]
Алексей М.
... Программисты и программистки! Выше флаг промежуточного переноса!

Re: make,и все такое
Hi!

Quoted text here. Click to load it

   Hу-ну, то-то с пол года назад в туалетах маздайских офисов сократили
полотенца и перешли на дешевое мыло - экономия в связи с падением
рентабильности, сообщило само руководство...

_______
Сергей.

make,и все такое
Hi Sergey, hope you are having a nice day!


18 Фев 05, Sergey Pinigin wrote to Maxim Polyanskiy:

 >> Отличия ОС от винды в том, что создатели ОС х сосут и оно никому не
 >> надо а создатели винды, даже в ОЕМ варианте свой хлам дешевле $110
 >> не продают, да и денег у них куры не клюют.
 SP>    Hу-ну, то-то с пол года назад в туалетах маздайских офисов
 SP> сократили полотенца и перешли на дешевое мыло - экономия в связи с
 SP> падением рентабильности, сообщило само руководство...

:))) Просто новый офис-манагер был еврейской национальности.

WBR,
    AVB


make, и все такое

   Maxim, ты ещё здесь сидишь?


Пятница Февраль 18 2005 00:41, Maxim Polyanskiy wrote to Arcady Schekochikhin:

 AS>> Заодно советую почитать книжки где рассказывается об отличиях в
 AS>> устройстве ОС и винды.
 MP> Отличия ОС от винды в том, что создатели ОС х сосут и оно никому не
 MP> надо а создатели винды, даже в ОЕМ варианте свой хлам дешевле $110 не
 MP> продают, да и денег у них куры не клюют.

 Угу, угу. А наркотики по этой логике куда полезнее большинства лекарств.
И наркобароны получаются самыми уважаемыми людьми ;)


                                                   Георгий


Re: make,и все такое
Hi!

Quoted text here. Click to load it

   "Продукт" вида "тихо, сам с собою...".
Если 15 впихнулось в 5, то можно и в один... "каша" будет гуще, может
это кому-то и нравится.

   make - это "надводна" часть айсберга, называемого проектом.
Проект состоит из программных модулей, модуль состоит из файлов...

   В случае применения CVS и взаимодействия проекта (его модулей) с
другими продуктами количество файлов HЕ стремится к ЕДИHИЦЕ.

Спорить тут не о чем.

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

PS:
Для сборки gnumake можно воспользоваться
  - батником "build all"
  - nmakefile (для nmake из MSVC).
Первая сборка секунд 40, файлов около 40 (точно не помню).
Изменил файл - "build all":40с, nmake:1с
Есть разница?
Или первым делом предлагается все "слить" в один файл чтоб "поработать"
с чужим проектом? ;-)

______
Сергей.





make, и все такое
Mon Feb 14 2005 23:36, Maxim Polyanskiy wrote to All:


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

 Святое дело. Программирование -  искусство, не так ли?
 Конфигурение всяких сред и скриптов многим дает не меньшее
самоудовлетворение,
 чем писание на ассемблере :)

 MP> Был проект - 15 файлов. Собирался 8 сек целиком и около
 MP> 5сек - make на некоем случайно измененном файле.

 :)))
 Проект на Mega128 собирается IAR build all порядка минуты на P-2.8.
 А если во всяких CCS/VDSP разрешить оптимизацию даже на небольших проектах,
 то можно идти кофе пить.  
 
 MP> Причем скорость make намного не возрасла, поскольку линковка все
 MP> равно время отжирает глобально

 Для этого существует incremental linking.

 VLV

 "Быть честным - лучший способ оставаться бедным"  (c) Hаполеон Бонапарт


make, и все такое
Hello Vladimir.

15 Feb 05 18:06, you wrote to Maxim Polyanskiy:

 VV>  :)))
 VV>  Проект на Mega128 собирается IAR build all порядка минуты на P-2.8.

А я думал, что gcc очень медленно компилирует. ;)

Alexey


make, и все такое
Hello Maxim!

14 Feb 05 23:36, you wrote to All:

 MP> занимает 2c чем-то cек. Вобщем ничего тут удивительного, компиллер
 MP> полтора мега, пока его в память загрузишь с диска, пока проинитишь,
 MP> времени столько ухлопается, что глядишь парсинг текста уже станет не
 MP> такой сложной задачей.

[Подбирая упавшую на пол челюсть] А разве компилятор по окончании работы не
остается в ОЗУ до новой компиляции либо до необходимости освободить память? Я
почему-то думаю, что это стандартно.

Anatoly


make, и все такое
Tue Feb 15 2005 18:36, Anatoly Mashanov wrote to Maxim Polyanskiy:

 AM> [Подбирая упавшую на пол челюсть] А разве компилятор по окончании работы
 AM> не остается в ОЗУ до новой компиляции либо до необходимости освободить
 AM> память? Я почему-то думаю, что это стандартно.

Компилятор запускается как дочерний процесс каждый раз, когда требуется
откомпайлить файл. После компиляции он из памяти выгружается; единственное,
что может остаться в памяти - это кэш файлов самого компилятора, его библиотек
и т. п., но все процедуры необходимо каждый раз выполнять заново: выделение
памяти, чтение файлов, парсинг и т. д. Чтобы компилятор остался в памяти и
смог заново начать компиляцию, необходимы технологии класса DDE/OLE/COM, но во
время разработки UNIX'а такие вещи не были распространены, да и необходимость
в таких действиях достаточно сомнительна.

С уважением, Денис


Re: make, и все такое
Quoted text here. Click to load it

Орлы, грамотеи, гиганты мысли! Почитайте как нибудь на досуге КАК ИМЕННО устроен
Юникс, как именно грамотно сделанные ОС используют так называемые "текстовые
сегменты", как они используют разделяемые библиотеки, как реализуют буферизацию
диска и виртуальную память, позволяющую хранить в ОЗУ ровно одну копию того же
самого кода для любого числа использующих этот код процессов. Почитайте,
желательно
не с экрана и не в ХТМЛ, а в книгах. Ведь книгопечатание изобрели уже давно и
книги доказали свою полезность.

Re: make, и все такое
Wed Feb 16 2005 12:37, Arcady Schekochikhin wrote to Denis Y. Borisov:

 AS> как именно грамотно сделанные ОС используют так называемые
 AS> "текстовые сегменты"

Что-то Google не стал мне ничего говорить по запросу
UNIX+"текстовые сегменты"...

 AS>, как они используют разделяемые библиотеки, как
 AS> реализуют буферизацию диска и виртуальную память, позволяющую хранить в
 AS> ОЗУ ровно одну копию того же самого кода для любого числа использующих
 AS> этот код процессов.

Make AFAIK не является многопоточным приложением. Потому код gcc и прочих
binutils с диска читать системе возможно не придется, но выполнять все
процедуры при запуске нового процесса, предусмотренные алгоритмом работы этого
процесса, все равно придется: выделение памяти под открываемые файлы, их
чтение, обработка, запись результатов - все это никуда не денется.

С уважением, Денис


Re: make, и все такое

Quoted text here. Click to load it

Даже если бы make был "многопоточным приложением", это ничего бы не изменило -
он запускает внешние программы, нуждающиеся в отдельных процессах.

Да и не нужны юниксу нити.
(сейчас затопчут)

Re: make, и все такое
16-Feb-05 13:51 Denis Y. Borisov wrote to Arcady Schekochikhin:

DB> Make AFAIK не является многопоточным приложением.
 Даже если - разве что-то мешает одно_поточному_ процессу
запустить несколько дочерних процессов в много_задачной_ операционке?

GNU make  - ключ -j - максимальное количество дочерних процессов впараллель.

DB> Потому код gcc и прочих
DB> binutils с диска читать системе возможно не придется, но выполнять все
DB> процедуры при запуске нового процесса, предусмотренные алгоритмом работы
DB> этого
DB> процесса, все равно придется: выделение памяти под открываемые файлы, их
DB> чтение, обработка, запись результатов - все это никуда не денется.

 Как разляжется. Система может выделять память одному процессу
пока другой ждёт поворота блина винта под головками.

wbr,
--
/* Oleksandr Redchuk, Brovary, Ukraine */
/* real '\x40' real '\x2E' kiev '\x2E' ua     */


make, и все такое
Привет!

Tue Feb 15 2005 18:36, Anatoly Mashanov wrote to Maxim Polyanskiy:

 AM> [Подбирая упавшую на пол челюсть]А разве компилятор по окончании работы
 AM> не остается в ОЗУ до новой компиляции либо до необходимости освободить
 AM> память? Я почему-то думаю, что это стандартно.

Дружеский совет: быстрее подвяжи свою челюсть чем-нибудь :) А то не
ровён час потеряешь... Где же это ты видел системы, которые вызывают
программу прямо из ОЗУ? Разве что Бэйсик какой-нить из ПЗУ в Синклере...
Во всех остальных, насколько я знаю, программа запускается по-новой.
Если только она не остается в памяти, ожидая ввода пользователя (это
уже не вызов из bat-файла). Hо так делают не многие программы.

Заметное ускорение повторных вызовов программы происходит не из-за того,
что она торчит в памяти ОЗУ неизвестно зачем, а благодаря кэшированию,
что было превосходно заметно на старых Виндах если установить смартдиск.
В современных Виндах кэширование само делается. Опять же, нынче во всех
жестких дисках кэши по 2-8 МБ. Если вызовы компилера следуют подряд (это
типичный случай при компиляции нескольких файлов проекта), то кэш очень
сильно ускоряет загрузку того же самого компилятора.

Юргис


Site Timeline