реклама на сайте
подробности

 
 
> Make, ускорение процесса сборки проектов
demiurg_spb
сообщение Aug 21 2012, 17:25
Сообщение #1


неотягощённый злом
******

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



Сегодня попробовал задать мейку во сколько потоков ему работать, т.к. у меня в системе видятся 4 ядра (1+HT)*2 то я задал 4:
Код
make -j 4 all

Результат: проект собрался ровно в 2 раза быстрее!

Спешу поделиться своей радостью со всеми:-)


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
klen
сообщение Aug 21 2012, 19:15
Сообщение #2


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



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

Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Aug 21 2012, 19:39
Сообщение #3


неотягощённый злом
******

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



Спасибо за наводку!
Проверил, у меня видимо не такой большой проект...
При дальнейшем увеличении потов скорость сборки не изменяется, как была 18 секунд, так и остаётся.

А можно-ли как-то из самого мейк-файла передавать мейк-утилите эту же информацию что и аргумент j?


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
ReAl
сообщение Aug 22 2012, 12:25
Сообщение #4


Нечётный пользователь.
******

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



Цитата(demiurg_spb @ Aug 21 2012, 22:39) *
А можно-ли как-то из самого мейк-файла передавать мейк-утилите эту же информацию что и аргумент j?
Из окружения (и на каждом компе своё), в переменной MAKEFLAGS
(через эту же переменную передаются флаги «вложенным» вызовам $(MAKE) )


Цитата(IgorKossak @ Aug 22 2012, 09:42) *
Получил следующую хохму - в одном потоке делалась компиляция, а в другом благополучно всё чистилось. Таким образом, когда дело дошло до линкера, то вылезла масса ошибок из-за нехватки объектных файлов. biggrin.gif
Так если в файловом менеджере запустить копирование какого-то каталога и тут же чразу его удаление, так тоже весело будет.

Если на -j рассчитывать, то надо бы цель отдельную
Код
rebuild:
    $(MAKE) clean
    $(MAKE)


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 22 2012, 15:44
Сообщение #5


фанат дивана
******

Группа: Свой
Сообщений: 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 (то есть до следующей жизни sm.gif ).


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
alx2
сообщение Aug 24 2012, 04:38
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(AHTOXA @ Aug 22 2012, 20:44) *
У меня была именно такая цель:
Код
build: clean all

Это не одно и то же.
Вы указали две разные цели (clean и all). Каждая из этих целей имеет свой рецепт, и при указании -j эти два рецепта выполняются параллельно.
В примере же ReAl один рецепт из двух строк. Эти строки всегда будут выполняться последовательно независимо от наличия или отсутствия -j.


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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 22 2012, 18:44) У мен...   Aug 23 2012, 06:50
||- - AHTOXA   Да, наверняка всё так и есть. Но мне это не нравит...   Aug 23 2012, 07:53
||- - Petka   Цитата(AHTOXA @ Aug 23 2012, 11:53) Да, н...   Aug 23 2012, 08:52
|||- - AHTOXA   Цитата(Petka @ Aug 23 2012, 14:52) Баналь...   Aug 23 2012, 10:28
|||- - Petka   Цитата(AHTOXA @ Aug 23 2012, 14:28) Ой ли...   Aug 23 2012, 12:55
|||- - AHTOXA   Цитата(Petka @ Aug 23 2012, 18:55) Это не...   Aug 23 2012, 17:33
|||- - 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
- - 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 15:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01501 секунд с 7
ELECTRONIX ©2004-2016