|
Make, ускорение процесса сборки проектов |
|
|
|
Aug 21 2012, 17:25
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Сегодня попробовал задать мейку во сколько потоков ему работать, т.к. у меня в системе видятся 4 ядра (1+HT)*2 то я задал 4: Код make -j 4 all Результат: проект собрался ровно в 2 раза быстрее! Спешу поделиться своей радостью со всеми:-)
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
 |
Ответов
|
Aug 22 2012, 12:25
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(demiurg_spb @ Aug 21 2012, 22:39)  А можно-ли как-то из самого мейк-файла передавать мейк-утилите эту же информацию что и аргумент j? Из окружения (и на каждом компе своё), в переменной MAKEFLAGS (через эту же переменную передаются флаги «вложенным» вызовам $(MAKE) ) Цитата(IgorKossak @ Aug 22 2012, 09:42)  Получил следующую хохму - в одном потоке делалась компиляция, а в другом благополучно всё чистилось. Таким образом, когда дело дошло до линкера, то вылезла масса ошибок из-за нехватки объектных файлов.  Так если в файловом менеджере запустить копирование какого-то каталога и тут же чразу его удаление, так тоже весело будет. Если на -j рассчитывать, то надо бы цель отдельную Код rebuild: $(MAKE) clean $(MAKE)
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Aug 22 2012, 15:44
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(ReAl @ Aug 22 2012, 18:25)  Если на -j рассчитывать, то надо бы цель отдельную Код rebuild: $(MAKE) clean $(MAKE) У меня была именно такая цель: Код build: clean all И всё равно с -j получилась ерунда - при первом вызове ничего не произошло (как будто всё up-to date), и лишь при втором начало-таки компилироваться. Но, что меня удивило больше - скорость компиляции визуально не изменилась. Поэтому я убрал -j, отложив многопоточную сборку до освоения scons (то есть до следующей жизни  ).
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 23 2012, 06:50
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(AHTOXA @ Aug 22 2012, 18:44)  У меня была именно такая цель: Код build: clean all И всё равно с -j получилась ерунда - при первом вызове ничего не произошло (как будто всё up-to date), и лишь при втором начало-таки компилироваться. Конечно, цель-то таки ж не такая. Тут build зависит от двух других, которые могут и в разном порядке достигаться. Если сначала достигнется all (проверили — всё на месте) и только потом clean (пока то проверялось — составляли список чего тереть), то такой эфект и будет. Я привёл цель без зависимостей с двумя последовательными действиями, каждое из которых может распараллеливаться, но между ними «точка следования» :-) Сейчас на ноуте с i3 (два ядра по два потока) типовая команда make -j 4 program, ещё ни разу непоняток из-за кривого порядка не было.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Aug 23 2012, 07:53
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Да, наверняка всё так и есть. Но мне это не нравится. Часто вижу варианты типа: Код all: message_begin elf size message_end Получается, что все эти варианты тоже будут глючить от многопоточности. Имхо, надо было и в такой перечень целей вставить «точки следования».
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 23 2012, 08:52
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(AHTOXA @ Aug 23 2012, 11:53)  Да, наверняка всё так и есть. Но мне это не нравится. Часто вижу варианты типа: Код all: message_begin elf size message_end Получается, что все эти варианты тоже будут глючить от многопоточности. Имхо, надо было и в такой перечень целей вставить «точки следования». Банальная безграмотность создателей таких make файлов.
|
|
|
|
Сообщений в этой теме
demiurg_spb Make Aug 21 2012, 17:25    demiurg_spb Цитата(ReAl @ Aug 22 2012, 16:25) Из окру... Aug 22 2012, 20:14     AHTOXA Цитата(demiurg_spb @ Aug 23 2012, 02:14) ... Aug 23 2012, 05:11          ReAl Цитата(AHTOXA @ Aug 23 2012, 20:33) А теп... Aug 23 2012, 19:28          Petka Цитата(AHTOXA @ Aug 23 2012, 21:33) Хорош... Aug 23 2012, 19:39      ReAl Цитата(AHTOXA @ Aug 23 2012, 10:53) Кодal... Aug 23 2012, 14:11    alx2 Цитата(AHTOXA @ Aug 22 2012, 20:44) У мен... Aug 24 2012, 04:38 IgorKossak Попробовал подобным образом сделать ребилд, т. е.
... Aug 22 2012, 06:42 _Pasha Цитата(IgorKossak @ Aug 22 2012, 09:42)
... Aug 22 2012, 07:14 DmitryM eCos по умолчанию собирается -j 4 Aug 22 2012, 19:10 IgorKossak AHTOXA
+1
Любую переделку мейкфайлов считаю мовето... Aug 23 2012, 08:02 AHTOXA Цитата(Petka @ Aug 24 2012, 01:39) Про оп... Aug 23 2012, 20:40 Petka Цитата(AHTOXA @ Aug 24 2012, 00:40) Пока ... Aug 24 2012, 07:05  AHTOXA Цитата(Petka @ Aug 24 2012, 13:05) После ... Aug 24 2012, 08:03   Petka Цитата(AHTOXA @ Aug 24 2012, 12:03) Это с... Aug 24 2012, 13:14   alx2 Цитата(AHTOXA @ Aug 24 2012, 13:03) Это с... Aug 27 2012, 05:32    AHTOXA Цитата(alx2 @ Aug 27 2012, 11:32) Вы гово... Aug 27 2012, 06:01   ReAl Цитата(AHTOXA @ Aug 24 2012, 11:03) Я счи... Aug 28 2012, 13:34    AHTOXA Цитата(ReAl @ Aug 28 2012, 19:34) Тьху, н... Aug 28 2012, 15:32    mdmitry Цитата(ReAl @ Aug 28 2012, 17:34) Кодbuil... Sep 10 2012, 10:21     AHTOXA Цитата(mdmitry @ Sep 10 2012, 16:21) Скаж... Sep 10 2012, 11:28      mdmitry Цитата(AHTOXA @ Sep 10 2012, 15:28) Потом... Sep 10 2012, 17:40       ReAl Цитата(mdmitry @ Sep 10 2012, 20:40) Цита... Sep 11 2012, 02:26 e-serg Цитата(AHTOXA @ Aug 24 2012, 04:40) Пока ... Aug 28 2012, 03:46  AHTOXA И? Это вы к чему? Aug 28 2012, 04:28   e-serg Цитата(AHTOXA @ Aug 28 2012, 13:28) И? Эт... Aug 28 2012, 05:30    AHTOXA Цитата(e-serg @ Aug 28 2012, 11:30) ... Aug 28 2012, 06:01 MBR Где-то в гентушных факах рекомендовалось устанавли... Sep 4 2012, 07:35 Дмитриос Мне кажется существенным выгрышем по сборке было б... Sep 10 2012, 22:37 AHTOXA Цитата(mdmitry @ Sep 10 2012, 23:40) Код#... Sep 11 2012, 02:46 mdmitry Цитата(AHTOXA @ Sep 11 2012, 06:46) Как м... Sep 11 2012, 07:13 MBR я тоже плюсую за all и clean. Причем, не забываем ... Sep 12 2012, 06:32 AHTOXA all и clean и так есть. Речь про
Кодbuild: cle... Sep 12 2012, 08:46
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|