Сообщение Re[38]: И кстати про макросы Dart от 26.09.2025 13:30
Изменено 26.09.2025 13:33 rg45
Re[38]: И кстати про макросы Dart
Здравствуйте, so5team, Вы писали:
S>В том-то и дело, что носит даже когда я сам стараюсь сделать максмимально "прямо"
S>Т.е. пока находишься в рамках "Си с классами" с минимальным количеством шаблонов, то все OK, .cpp-файлы компилируются меньше секунды каждый.
S>Как только добавляются навороченные шаблоны, так 8-10 секунд запросто на один .cpp-ник.
Но всё-таки, какие-то способы решения, какие-то компромиссы находить получается, наверное?
У меня самый такой распространённый способ — это создание нешаблонных фасадов с небольшим числом единиц трансляции, использующих достаточно обширную шаблонную имплементацию. Вот, пример из недавнего — библиотека в специфичной предметной области, состоящая всего из трёх cpp-шников и почти двухсот заголовочных файлов. Использование возможно двойственное — через полностью нешаблонный фасад, но и доступ к отдельным элементам "шаблонной магии" также оставлен открытым. Общее время компиляции этих трёх cpp-пишников — около 15 секунд. Что выглядит сущей ерундой на фоне общего времени сборки систем, где эта библиотека используется.
S>В том-то и дело, что носит даже когда я сам стараюсь сделать максмимально "прямо"
S>Т.е. пока находишься в рамках "Си с классами" с минимальным количеством шаблонов, то все OK, .cpp-файлы компилируются меньше секунды каждый.
S>Как только добавляются навороченные шаблоны, так 8-10 секунд запросто на один .cpp-ник.
Но всё-таки, какие-то способы решения, какие-то компромиссы находить получается, наверное?
У меня самый такой распространённый способ — это создание нешаблонных фасадов с небольшим числом единиц трансляции, использующих достаточно обширную шаблонную имплементацию. Вот, пример из недавнего — библиотека в специфичной предметной области, состоящая всего из трёх cpp-шников и почти двухсот заголовочных файлов. Использование возможно двойственное — через полностью нешаблонный фасад, но и доступ к отдельным элементам "шаблонной магии" также оставлен открытым. Общее время компиляции этих трёх cpp-пишников — около 15 секунд. Что выглядит сущей ерундой на фоне общего времени сборки систем, где эта библиотека используется.
Re[38]: И кстати про макросы Dart
Здравствуйте, so5team, Вы писали:
S>В том-то и дело, что носит даже когда я сам стараюсь сделать максмимально "прямо"
S>Т.е. пока находишься в рамках "Си с классами" с минимальным количеством шаблонов, то все OK, .cpp-файлы компилируются меньше секунды каждый.
S>Как только добавляются навороченные шаблоны, так 8-10 секунд запросто на один .cpp-ник.
Но всё-таки, какие-то способы решения, какие-то компромиссы находить получается, наверное?
У меня самый такой распространённый способ — это создание нешаблонных фасадов с небольшим числом единиц трансляции, использующих достаточно обширную шаблонную имплементацию. Вот, пример из недавнего — библиотека в специфичной предметной области, состоящая всего из трёх cpp-шников и почти двухсот заголовочных файлов. Использование возможно двойственное — через полностью нешаблонный фасад, но и доступ к отдельным элементам "шаблонной магии" также оставлен открытым. Вся эта кухня, конечно же, имеет чёткую понятную структуру, в которой сразу же ясно, где мухи, где котлеты. Общее время компиляции этих трёх cpp-пишников — около 15 секунд. Что выглядит сущей ерундой на фоне общего времени сборки систем, где эта библиотека используется.
S>В том-то и дело, что носит даже когда я сам стараюсь сделать максмимально "прямо"
S>Т.е. пока находишься в рамках "Си с классами" с минимальным количеством шаблонов, то все OK, .cpp-файлы компилируются меньше секунды каждый.
S>Как только добавляются навороченные шаблоны, так 8-10 секунд запросто на один .cpp-ник.
Но всё-таки, какие-то способы решения, какие-то компромиссы находить получается, наверное?
У меня самый такой распространённый способ — это создание нешаблонных фасадов с небольшим числом единиц трансляции, использующих достаточно обширную шаблонную имплементацию. Вот, пример из недавнего — библиотека в специфичной предметной области, состоящая всего из трёх cpp-шников и почти двухсот заголовочных файлов. Использование возможно двойственное — через полностью нешаблонный фасад, но и доступ к отдельным элементам "шаблонной магии" также оставлен открытым. Вся эта кухня, конечно же, имеет чёткую понятную структуру, в которой сразу же ясно, где мухи, где котлеты. Общее время компиляции этих трёх cpp-пишников — около 15 секунд. Что выглядит сущей ерундой на фоне общего времени сборки систем, где эта библиотека используется.