|
2.21, Аноним (21), 14:05, 16/04/2021 [^] [^^] [^^^] [ответить] [↓] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
Ещё с 9 есть. Только в CMake их поддержки не завезли, придётся самому валандаться с аттрибутами коммандной строки. А мы ведь системы сборки для того и используем, чтобы с ними за нас валандалась система сборки. Поэтому, пока в системы сборок поддержку модулей не завезут, прок от использования модулей будет отрицательным.
| |
|
|
4.54, Аноним (-), 10:44, 17/04/2021 [^] [^^] [^^^] [ответить] [↓] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| –2 +/– |
Это что-то совсем уж маздайное, начиная с способов даунлоада и "секурити" в виде SHA256 (Подписи GPG?! Не, не слышали!) и поддерживает аж полторы конфигурации. Из которых примерно 3/4 - маздайка. Которая мне например как таргет не интересна вообще. Так что убийцы cmake из этой штуки явно не вырисовывается. Маздайный апстрим == trouble on the way.
| |
|
5.68, Аноним (68), 23:29, 17/04/2021 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
Разработчики пользуются то ли маком, то ли линуксом (возможно, и тем и другим). Бинарные пакеты build2 есть под большинство дистрибутивов Linux - Ubuntu/Debian, Fedora, RedHat/CentOS, вроде есть под Arch и Gentoo (под винду и мак, кстати, вроде нет). Правда, все они неофициальные, потому что официальный способ - собирать из исходников, но бинарные пакеты стабильно поддерживаются и ссылки есть на официальном сайте. Build2 поддерживает сборку приложений под Linux, Win, Mac, FreeBSD, причем даже в своем CI.
Ты, похоже, про какой-то не тот build2 пишешь.
| |
|
|
|
|
1.10, Анонас (?), 13:00, 16/04/2021 [ответить] [﹢﹢﹢] [ · · · ] [↓] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +18 +/– |
> Реализована и включена по умолчанию поддержка предложенных в стандарте C++20 атрибутов "likely" и "unlikely", позволяющих информировать оптимизатор о вероятности срабатывания условной конструкции
А "highly likely" почему не добавили?
| |
|
|
3.30, ng (?), 15:21, 16/04/2021 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +4 +/– |
С точки зрения ламера есть несколько вариантов (в нотации ASM х86):
- поменять условный переход на безусловный по тому же адресу: JZ => JMP;
- поменять логику перехода сохранив адрес перехода: JZ => JNZ;
- исключить проверку и переход вообще: J(x) => NOP;
- наверняка, существуют и другие способы "вмешательства в исход условного оператора", известные хакерам безотносительно их национальной принадлежности.
imho
| |
|
|
|
|
5.26, Аноним (26), 14:47, 16/04/2021 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| –2 +/– |
Ну с сишного register есть, причём ради интереса замерял простенький цикл со счётчиком и ускорение было в 10000 раз. По факту приложение в итоге начало отрабатывать в 1000 раз быстрее. А видишь из плюсов выкинули.
| |
|
6.55, Аноним (-), 10:49, 17/04/2021 [^] [^^] [^^^] [ответить] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
По состоянию на *сейчас* register как правило не дает совсем никакого эффекта. Компилер и так допрет загнать "горячие" вещи в регистры, покуда их хватает. Собственно поэтому его и убрали...
Ну или давайте конкретный пример
- Конфигурации. Компилер, ось, проц, опции.
- Кода где от register есть какой-то толк. Я проверю.
Интерес потому что я пробовал так и сяк и вообще разницу в кодогенерации (как минимум на ARM) так сразу получить не смог.
| |
|
7.64, Аноним (26), 19:26, 17/04/2021 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
Это был gcc7 linux amd64 проц какой-то тех лет от интела, O2 и native. Разница в кодогенерации была, и была разница в производительности. Кода у меня нет, там было что-то банальное типа for(int i;i<100500;++i) компилятор не стал это оптимизировать и счётчик в регистры не назначался.
| |
|
|
|
|
|
|
1.25, Аноним (25), 14:41, 16/04/2021 [ответить] [﹢﹢﹢] [ · · · ] [↓] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +1 +/– |
AVX512 то еще говно по слвоам Линуса. AVX2 уже давно есть. -march=native решает трудности выбора нужных инструкций. Но можно выключить ненужное, для чего и есть уровни 3 и 2.
| |
|
|
3.56, Аноним (-), 10:52, 17/04/2021 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +1 +/– |
Ну это вам язык РАПИРА надо. Еще можно б#% буду! добавить. Хотя в принципе одно время такой синтаксис катитл и в MSовском сишном компилере, загуглить про "какой-то козел стал гoвнистость". Но это нестандарт, другие компилеры не жрут.
| |
|
|
1.35, adolfus (ok), 16:05, 16/04/2021 [ответить] [﹢﹢﹢] [ · · · ] [↓] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| –4 +/– |
likely, unlikely ...
Глупости все это -- управление предвыборкой. Не все платформы умеют это делать. ia32 и amd64 в подявляющем большинстве случаев не могут эти хинты эффективно обработать.
Самый действенный метод повысить призводительность вычислений -- писать всю математику на фортране или прямо на ассемблере платформы.
| |
|
|
|
4.63, Tim (??), 19:01, 17/04/2021 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| –1 +/– |
В условии if-else две ветки выполнения. Для компилятора они равновероятны.
Если не повезёт, в коротком цикле окажется сброс конвейера.
На пример с GET, возможен сброс после каждого символа.
| |
|
5.66, Аноним (3), 20:00, 17/04/2021 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
Тебе не повезло с процом, если он у тебя конвейер сбрасывает. Процы уже давно спекулятивно исполняют обе ветки после ветвления, отбрасывая потом ненужную уже фоном. Это появилось вскоре, как сделали переименовку регистров.
| |
|
6.71, Tim (??), 07:47, 18/04/2021 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
Такой ерундой страдал 4-ый пень, и грелся аж песец.
Новые процы спекулятивно выполняют только одну ветку.
Или ведут статистику переходов, ака динамическое предсказание, или эвристика... типа к младшим адресам значит цикл, к старшим значит переход маловероятен.
В общем пользуй PGO либо ставь атрибуты.
| |
|
|
|
|
2.72, Алкоголик Анон (?), 18:02, 18/04/2021 [^] [^^] [^^^] [ответить] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
> likely, unlikely ...
> Глупости все это -- управление предвыборкой. Не все платформы умеют это делать.
> ia32 и amd64 в подявляющем большинстве случаев не могут эти хинты
> эффективно обработать.
> Самый действенный метод повысить призводительность вычислений -- писать всю математику
> на фортране или прямо на ассемблере платформы.
При чём тут предвыборка вообще?
Например в каком-то маловероятном случае может требоваться крупный массив.
// ...
if(content_coded) [[unlikely]] {
int buffer[16*1024*1024];
/* decode content */
}
return content[0];
// :-)
Ну вот. Без unlikely оптимизирующий компилятор может резервировать память под buffer каждый раз при вызове функции (ещё до проверки чего-либо). Также может влиять на inlining...
| |
|
1.46, Иван (??), 18:18, 16/04/2021 [ответить] [﹢﹢﹢] [ · · · ] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +2 +/– |
> На платформе Linux для архитектур AArch64 и PowerPC включён режим
> "-fasynchronous-unwind-tables" для генерации "раскрученных"
> (unwind) таблиц вызовов, как в GCC.
Поправьте пожалуйста перевод.
"unwind tables" это таблицы для раскрутки стека, а не "раскрученные" таблицы. Асинхронные таблицы раскрутки стека позволяют раскручивать стек в любой точке (на любой инструкции), а не только в точках вызова функций.
| |
1.73, iZEN (ok), 18:43, 20/04/2021 [ответить] [﹢﹢﹢] [ · · · ] [↑] [п╨ п╪п╬п╢п╣я─п╟я┌п╬я─я┐]
| +/– |
На FreeBSD сейчас обязательно присутствует ТРИ версии LLVM: системный, LLVM 10.0 для mesa-dri, LLVM 11.0 для Firefox и Thunderbird. И ещё LLVM 9.0 и GCC 10 для сборки чего-то там используется, но это не считается - их можно удалить по окончании сборки.
Вот такой вот "зоопарк" версий, как у MS .Net в своё время.
| |
|