The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск сборочного инструментария Qbs 2.0, opennews (?), 25-Апр-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


11. "Выпуск сборочного инструментария Qbs 2.0"  +/
Сообщение от Аноним (11), 25-Апр-23, 23:47 
Оказывает, к сожалению. Время пересборки (incremental build) вместе с make в сотни раз медленнее чем с qbs, meson, ninja, да почти что угодно (кроме всратого scons который умудряется делать инкрементные сборки медленнее чем make сделанный 40 лет назад).

К слову Qbs не замена make, а скорее замена meson+ninja, cmake+make, SCons, MSBuild autotools+make и вот такого прочего. т.е. не просто сборка, а полный комбайн.


Я не агитирую переходить на Qbs, к сожалению он сильно отстает по фичам от cmake а по интеграции с IDE от вообще чего угодно (кроме qt creator на все остальное забей).

Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору

14. "Выпуск сборочного инструментария Qbs 2.0"  +1 +/
Сообщение от Аноним (14), 26-Апр-23, 00:20 
"В сотни раз" -- сильное преувеличение. https://hamelot.io/programming/make-vs-ninja-performance-com.../ И скорость сборки зависит не от инструментария автоматизации сборки, а от компилятора -- он требует больше всего ресурсов (любых, не важно, ЦП, памяти или I/O), поэтому производительность упирается именно в него.
Ответить | Правка | Наверх | Cообщить модератору

33. "Выпуск сборочного инструментария Qbs 2.0"  +/
Сообщение от Ванёк (?), 26-Апр-23, 10:55 
Да, именно так, всё упирается в компилятор, а не в make или что-то ещё.
Ответить | Правка | Наверх | Cообщить модератору

36. "Выпуск сборочного инструментария Qbs 2.0"  +4 +/
Сообщение от Аноним (36), 26-Апр-23, 15:16 
Для полной пересборки да, все упирается в производительность компилятора.

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

Так что, если просто брать готовый сторонний проект и немодифицируя его собирать, то, в принципе, без разницы, какая у него система сборки. А вот если быть разработчиком этого проекта, то быстрая инкрементальная сборка очень важна.

Ответить | Правка | К родителю #14 | Наверх | Cообщить модератору

53. "Выпуск сборочного инструментария Qbs 2.0"  +/
Сообщение от InuYasha (??), 27-Апр-23, 12:01 
По-моему, сравнивать даты изменения *.c и *.obj умел ещё make - разве нет?
Ответить | Правка | Наверх | Cообщить модератору

54. "Выпуск сборочного инструментария Qbs 2.0"  +/
Сообщение от InuYasha (??), 27-Апр-23, 12:03 
Почитал остальной ваш тред - можете не отвечать :D
Ответить | Правка | Наверх | Cообщить модератору

38. "Выпуск сборочного инструментария Qbs 2.0"  +/
Сообщение от Аноним (38), 26-Апр-23, 15:50 
>> Время пересборки (incremental build)
> скорость сборки зависит не от инструментария автоматизации сборки, а от компилятора

По вашей ссылке речь идёт о чистой сборке, а начальное сообщение — про инкрементальную сборку, которая нужна разработчикам десятки и сотни раз в день.

Для make совершенно типично долго обходить все каталоги, чтобы через 10+ секунд скомпилировать и перелинковать один файл. Для больших проектов это просто ад.

Ответить | Правка | К родителю #14 | Наверх | Cообщить модератору

43. "Выпуск сборочного инструментария Qbs 2.0"  +/
Сообщение от Ванёк (?), 26-Апр-23, 17:19 
Пересборку make делает очень быстро. У меня каждый раз делается замер общего времени компиляции/сборки, времени компиляции каждого модуля, времени линковки и прочего. Причём сценарии сборки make довольно большие (более 1500 строк чистого кода - это уже после вычета комментариев и пустых строк) и используется Perl для вспомогательных целей. Вывод следующий: как для полной сборки проекта, так и для частичной пересборки, ситуация примерно одна и та же, а именно: практически всё время затрачивается на работу компилятора gcc/clang, а всё остальное (make, линковщик...) занимает очень незначительное время, уменьшение которого на общее время как-то существенно повлиять не может.
Ответить | Правка | Наверх | Cообщить модератору

34. "Выпуск сборочного инструментария Qbs 2.0"  +/
Сообщение от Ванёк (?), 26-Апр-23, 11:11 
Время сборки при использовании make практически такое же, как при использовании любого другого инструментария для организации сборки. Всегда замеряю общее время сборки проекта, каждого модуля в отдельности, и всегда оказывается, что практически всё время сборки тратится на работу компилятора gcc/clang (clang обычно чуть быстрее gcc), а не make. Это, конечно, при условии грамотного написания сценариев make. Всё, что вы можете выиграть от перехода на более новые системы сборки - это десятые доли секунды.
Ответить | Правка | К родителю #11 | Наверх | Cообщить модератору

42. "Выпуск сборочного инструментария Qbs 2.0"  +/
Сообщение от Аноним (38), 26-Апр-23, 17:18 
> Всё, что вы можете выиграть от перехода на более новые системы сборки - это десятые доли секунды.

Всё, что могут выиграть пользователи — это проценты, да. А разработчки могут каждый день экономить по пол часа. Вообще — тут как с git.
Ситуация похожа на то, что Linus говорил про git (https://www.youtube com/watch?v=4XpnKHJAok8&t=3287s).
Разница не просто «быстрее или медленнее».
Если сборка занимает секунду, то в случае сомнений можно нажать build и посмотреть результат.
А с make нужно ждать 10-20-30 секунд, и это всё меняет.

Ответить | Правка | Наверх | Cообщить модератору

44. "Выпуск сборочного инструментария Qbs 2.0"  +/
Сообщение от Ванёк (?), 26-Апр-23, 17:25 
Замеры времени показывают, что практически всё время затрачивается на работу компилятора. Make, линковщик и прочее занимает максимум 5% времени в худшем случае. Если у кого-то иначе, смотрите, что не так с вашими сценариями сборки make, изучите make лучше - у него много опций и возможностей которые надо понимать, чтобы всё хорошо работало. Также надо понимать опции компиляторов gcc/clang, некоторые из которых непосредственно взаимосвязаны с работой make.
Ответить | Правка | Наверх | Cообщить модератору

46. "Выпуск сборочного инструментария Qbs 2.0"  +/
Сообщение от Аноним (38), 26-Апр-23, 19:59 
> Замеры времени показывают, что практически всё время затрачивается на работу компилятора.

Вы понимаете, что значит incremental build?

Давайте напомню: это повторная сборка без очистки сборочной директории. Допустим, в проекте 100 C++ файлов. Разработчики, как правило, редактируют их по одному. И вот в случае, если разработчик что-то делает в одном файле и периодически собирает проект для проверки, то компилируются не 100 файлов, а один. И в этом случае проявляется неэффективность сценариев make в работе с файлами. Большая часть времени в такой сборке уходит не на компиляцию, а на проверку того, что 99 файлов компилировать не надо.

> линковщик и прочее занимает максимум 5% времени в худшем случае

Включите LTCG или отладку и линковка сразу займёт больше времени. Но смысл в том, что в инкрементальных сборках время работы make куда больше 5% и вполне бывает 50% и даже 90%.

Вот делает разработчик, например, тест для какого-нибудь toolkit — Qt или GTK.
Запуск make даже без изменившихся файлов займёт десятки секунд, а потом компиляция+линковка теста ещё 1-3 секунды.

Ответить | Правка | Наверх | Cообщить модератору

47. "Выпуск сборочного инструментария Qbs 2.0"  +/
Сообщение от Ванёк (?), 26-Апр-23, 21:40 
Никто каждый раз не перекомпилирует весь проект. Это обычный режим работы. Все в курсе об этом режиме. Для этого режима и предназначен make и работает он очень быстро. Если в проекте нет изменений, то на среднем проекте проверка всего и вся занимает десятые доли секунды. У меня он работает так. Всё работает быстро, и ничего не тормозит. При этом сценарии make не маленькие - более 1500 строк (это уже за вычетом комментариев и пустых строк).
Ответить | Правка | Наверх | Cообщить модератору

48. "Выпуск сборочного инструментария Qbs 2.0"  +/
Сообщение от Ванёк (?), 26-Апр-23, 22:03 
Выше уже приводили ссылку, где сравнивается производительность make и ninja, которая разрабатывалась как улучшенная и ускоренная альтернатива make: https://hamelot.io/programming/make-vs-ninja-performance-com.../
Это правдивые данные. По факту разница в производительности между ними очень незначительная, как для полной, так и для частичной пересборки проекта, хотя для частичной пересборки она таки есть, но абсолютно некритичная - десятые доли секунды. То есть для тех, у кого уже есть отработанные годами сценарии сборки make, переходить на что-то другое смысла никакого нет.
Ответить | Правка | К родителю #46 | Наверх | Cообщить модератору

57. "Выпуск сборочного инструментария Qbs 2.0"  +/
Сообщение от kuzulis (?), 27-Апр-23, 14:21 
> (кроме qt creator на все остальное забей).

Есть же еще плагин для VSCode. ))

Ответить | Правка | К родителю #11 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру