The OpenNET Project / Index page

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



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

Оглавление

Релиз набора компиляторов LLVM 12.0 , opennews (??), 16-Апр-21, (0) [смотреть все]

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


10. "Релиз набора компиляторов LLVM 12.0 "  +18 +/
Сообщение от Анонас (?), 16-Апр-21, 13:00 
> Реализована и включена по умолчанию поддержка предложенных в стандарте C++20 атрибутов "likely" и "unlikely", позволяющих информировать оптимизатор о вероятности срабатывания условной конструкции

А "highly likely" почему не добавили?

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

12. "Релиз набора компиляторов LLVM 12.0 "  +5 +/
Сообщение от anonymous (??), 16-Апр-21, 13:15 
Ты хочешь сказать, что русские хакеры могут вмешаться в исход условного оператора if???
Ответить | Правка | Наверх | Cообщить модератору

30. "Релиз набора компиляторов LLVM 12.0 "  +4 +/
Сообщение от ng (?), 16-Апр-21, 15:21 
С точки зрения ламера есть несколько вариантов (в нотации ASM х86):
- поменять условный переход на безусловный по тому же адресу: JZ => JMP;
- поменять логику перехода сохранив адрес перехода: JZ => JNZ;
- исключить проверку и переход вообще: J(x) => NOP;
- наверняка, существуют и другие способы "вмешательства в исход условного оператора", известные хакерам безотносительно их национальной принадлежности.

imho

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

38. "Релиз набора компиляторов LLVM 12.0 "  +2 +/
Сообщение от Rndanon (?), 16-Апр-21, 16:50 
Лови русского(советского?) хакера!
Ответить | Правка | Наверх | Cообщить модератору

15. "Релиз набора компиляторов LLVM 12.0 "  +/
Сообщение от Аноним (15), 16-Апр-21, 13:34 
С гцц оно существует с какого года? С 2000?
Ответить | Правка | К родителю #10 | Наверх | Cообщить модератору

18. "Релиз набора компиляторов LLVM 12.0 "  –2 +/
Сообщение от жопка3 (?), 16-Апр-21, 13:43 
Вы путаете аттрибуты стандарта C++ и аттрибуты поддерживаемые компилятором.
Ответить | Правка | Наверх | Cообщить модератору

24. "Релиз набора компиляторов LLVM 12.0 "  –1 +/
Сообщение от Аноним (3), 16-Апр-21, 14:20 
А есть разница на результирующий код? Или ты из секты синтаксической соли?
Ответить | Правка | Наверх | Cообщить модератору

26. "Релиз набора компиляторов LLVM 12.0 "  –2 +/
Сообщение от Аноним (26), 16-Апр-21, 14:47 
Ну с сишного register есть, причём ради интереса замерял простенький цикл со счётчиком и ускорение было в 10000 раз. По факту приложение в итоге начало отрабатывать в 1000 раз быстрее. А видишь из плюсов выкинули.
Ответить | Правка | Наверх | Cообщить модератору

29. "Релиз набора компиляторов LLVM 12.0 "  +2 +/
Сообщение от Аноним (28), 16-Апр-21, 15:20 
Ой, всё...
Ответить | Правка | Наверх | Cообщить модератору

32. "Релиз набора компиляторов LLVM 12.0 "  –1 +/
Сообщение от Аноним (26), 16-Апр-21, 15:42 
> Ой, всё...

Хорошая новость: пго этот цикл тоже соптимизировал, даже ещё лучше. Плохая: без пго единственная надежда на такие подсказки от кодера.

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

57. "Релиз набора компиляторов LLVM 12.0 "  +/
Сообщение от Аноним (-), 17-Апр-21, 10:59 
Что вы там вообще делали? Простой цикл со счетчиком gcc например обычно випилывает до условного return 42, заметив что эффекта от цикла ровно ноль и на этой почве вообще грохнув весь этот код. Так что скорость получается в дофига раз больше - кода вообще нет.

Более того - он умеет в сильно более продвинутый анализ. Если есть 10 веток функции для разных значений параметров, сцук замечает что 80% этого unused (если оно так) - и выпиливает к чертям код реализации.

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

65. "Релиз набора компиляторов LLVM 12.0 "  +/
Сообщение от Аноним (26), 17-Апр-21, 19:28 
Цикл не был пустым естественно, он был динамическим и зависел от внешних данных (с диска). Просто переменная счётчика не попадала в регистры процессора из-за чего ощутимо падала производительность.
Ответить | Правка | Наверх | Cообщить модератору

55. "Релиз набора компиляторов LLVM 12.0 "  +/
Сообщение от Аноним (-), 17-Апр-21, 10:49 
По состоянию на *сейчас* register как правило не дает совсем никакого эффекта. Компилер и так допрет загнать "горячие" вещи в регистры, покуда их хватает. Собственно поэтому его и убрали...

Ну или давайте конкретный пример
- Конфигурации. Компилер, ось, проц, опции.
- Кода где от register есть какой-то толк. Я проверю.

Интерес потому что я пробовал так и сяк и вообще разницу в кодогенерации (как минимум на ARM) так сразу получить не смог.

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

64. "Релиз набора компиляторов LLVM 12.0 "  +/
Сообщение от Аноним (26), 17-Апр-21, 19:26 
Это был gcc7 linux amd64 проц какой-то тех лет от интела, O2 и native. Разница в кодогенерации была, и была разница в производительности. Кода у меня нет, там было что-то банальное типа for(int i;i<100500;++i) компилятор не стал это оптимизировать и счётчик в регистры не назначался.
Ответить | Правка | Наверх | Cообщить модератору

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

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




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

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