The OpenNET Project / Index page

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



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

Оглавление

Релиз набора компиляторов GCC 12, opennews (?), 06-Май-22, (0) [смотреть все]

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


104. "Релиз набора компиляторов GCC 12"  +1 +/
Сообщение от Аноним (-), 07-Май-22, 10:40 
> А какой смысл в -O2?

А что предлагается то? -O3 например может сильно раздуть код а выигрыш иногда того стоит а иногда даже проигрыш бывает, да еще некоторый алгоритмический код глюкает на этом уровне оптимизации.

> улучшить скорость процессора делают забеги процессора в Gentoo.

Возможно вы имели в виду запрыги на грабли? :)

> Фишка в том, что несовсем готовые пакеты могут не собраться новым компилятором в стабильный
> вариант при использовании агрессивных флагов компиляции.

Еще лучше если оно собралось но потом - опа, глюк! Понимаешь, некоторым не хочется долбаться ради еще 2% перфоманса, и гарантированность результата - может перевесить эти 2% и сопутствующие глюки.

> нее максимум или практически максимум если система нестабильна на максимально агрессивных
> флагах компиляции.

Кажется он начинает о чем-то догадываться. Задаунвольтить - а потом тест стабильности и корректности работы проца сравнимый с фабричным ты конечно же умеешь? Во всех краевых случаях? Или тебя бонусом к глюкам мегаоптимизнутого кода начнут по@бывать еще и глюки процыка раз в пару часов - и ты вообще никогда не поймешь что в этом месиве глюкает? :)

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

111. "Релиз набора компиляторов GCC 12"  +/
Сообщение от Игуанодон (?), 07-Май-22, 12:38 
-Os хватит всем.
Ответить | Правка | Наверх | Cообщить модератору

126. "Релиз набора компиляторов GCC 12"  +/
Сообщение от Аноним (-), 07-Май-22, 20:00 
> -Os

Для gcc существенно не отличается от -O2. Вообще не понятно для чего нужен.

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

150. "Релиз набора компиляторов GCC 12"  +/
Сообщение от n00by (ok), 09-Май-22, 08:02 
На процессорах с небольшим кешем инструкций может оказаться быстрее. Во времена Целеронов было особенно заметно, потому Интел рекомендовала оптимизировать по скорости - надо же как-то объяснить цену кукурузных Пней.
Ответить | Правка | Наверх | Cообщить модератору

155. "Релиз набора компиляторов GCC 12"  +1 +/
Сообщение от Аноним (-), 09-Май-22, 10:15 
> bash $ diff -u <(gcc -O2 -Q --help=optimizers) <(gcc -Os -Q --help=optimizers)

Посмотри вывод. Разница только в выравнивании блоков (функций, циклов, меток для перехода и тп). На размер кода это практически не влияет, так как всё мелкое заинлайнится, а большое - разница не больше погрешности измерений.

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

177. "Релиз набора компиляторов GCC 12"  +/
Сообщение от n00by (ok), 10-Май-22, 09:49 
Когда я это смотрел, использовал профилировщик и замерял время исполнения. Выравнивание как раз и делает погоду. При большом кеше получаем минимальный выигрыш за счёт перехода на выровненный блок, а при маленьком кеше эти "оптимизированные" кусочки начинают вытеснять из кеша друг друга, поскольку в сумме их помещается более чем вчетверо меньше (и это без учёта -faggressive-loop-optimizations). Но отчасти Вы правы, поскольку я проверял на MSVC (GCC в то время сливал по скорости сгенерированного кода), а оптимизации различаются.
Ответить | Правка | Наверх | Cообщить модератору

179. "Релиз набора компиляторов GCC 12"  +/
Сообщение от Аноним (-), 10-Май-22, 10:03 
>> gcc
> поскольку я проверял на MSVC

Отлично!

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

180. "Релиз набора компиляторов GCC 12"  +/
Сообщение от n00by (ok), 10-Май-22, 10:10 
>>> gcc
>> поскольку я проверял на MSVC
> Отлично!

Будем разбирать, в чем отличия в плане выравнивания и почему у меня написано "***может*** оказаться"? Допустим, гранулярность 16 байт. Выравниваются кусочки в 8 байт. В среднем перерасход памяти вдвое, вытеснения вдвое чаще при том же объёме кеша. А он у Целеронов вчетверо меньше. И это без учёта ассоциативности.

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

181. "Релиз набора компиляторов GCC 12"  +/
Сообщение от n00by (ok), 10-Май-22, 10:17 
Почему именно MSVC. Он генерирует pdb. Это надо не только для отладки. Тогда был профилировщик AMD CodeAnalyst - он проводил симуляцию конвейера и строил диаграмму исполнения команд по стадиям. То есть все промахи кеша показывал наглядно в графическом виде. uProf сейчас такое не показывает.
Ответить | Правка | К родителю #179 | Наверх | Cообщить модератору

176. "Релиз набора компиляторов GCC 12"  +/
Сообщение от Аноним (-), 10-Май-22, 09:49 
> Для gcc существенно не отличается от -O2. Вообще не понятно для чего нужен.

Вообще-то отличается. Особенно на микроконтроллерах. Код заметно меньше. Затем и нужен. А так прикольно, приперся какой-то некомпетент с маргинальным бэкграундом и выдал свое сверхценное мнение о (не)нужности фичи.

Мораль сей басни такова: чем безапелляционнее заявы тем некомпетентнее заявляющий.

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

182. "Релиз набора компиляторов GCC 12"  +/
Сообщение от Аноним (-), 10-Май-22, 10:47 
> Особенно на микроконтроллерах.

Где максимум gcc4. Там да, '-Os' достаточно сильно отличается от '-O2'.
Начиная с gcc5 сильно поменялась оптимизация по размеру.

Есть `clang -Oz`, вот он пытается.

> Мораль сей басни такова: чем безапелляционнее заявы тем некомпетентнее заявляющий.

На себя посмотри.

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

191. "Релиз набора компиляторов GCC 12"  +/
Сообщение от Аноним (-), 11-Май-22, 21:36 
> Где максимум gcc4.

Так, что я там про некомпетентность говорил? Прости, тезка, но LAMERS MUST DIE.

- Самый винтажный GCC который я у себя нашел на эту тему был GCC 5.4 для avr'ок. Есть и более новые, они не моя основная платформа и я не парюсь особо.
- Самый винтажный GCC для ARM'ов в моих системах был 8. Но даже текущий релиз билдится для них влет.

Cortex-M и AVR по-моему достаточно микроконтроллерно уже, не? Но где же gcc4? В музее? :)

> Там да, '-Os' достаточно сильно отличается от '-O2'.

Да оно так то везде отличается. И хотя ты частично прав в том что оно в чем-то похоже, в целом разнца такова что -Os предпочитает более медленные но компактные варианты, а -O2 более быстрые даже если код жирнее. Запрос компактного размера заставляет оптимизер делать более компактный код даже если это будет заметно медленнее.

Как оно на конкретный алгоритм разложится - на самом деле очень отдельный вопрос. Особенно в паре с LTO каким-нибудь. Возможны варианты. В конечном итоге вон то - общая "усредненная" идея, но всегда возможны забавные частные случаи. Окончательный вердикт выносит бенч, и в энном случае совсем не обязано быть как написано. Но целом идея - вон та.

> Начиная с gcc5 сильно поменялась оптимизация по размеру.

Там еше LTO где-то в процессе появился, в 5 уже вроде был но довольно глючный. При правильном подходе может еще добрую четверть бинаря удалить вникуда, не теряя в скорости, что и делает его эпик вином.

> Есть `clang -Oz`, вот он пытается.

Я не пользуюсь шлангом, мне он не интересен, так что не в курсе про его приколы. GCC поддерживает больше платформ и мне это удобно.

> На себя посмотри.

Посмотрел, даже поделился наблюдениями насчет версий GCC. Доволен?

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

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

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




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

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