|
0 / 0 / 0
Регистрация: 13.09.2015
Сообщений: 16
|
|||||||||||||||||||||
Оптимизация кода, нарушающего правила strict aliasing13.09.2015, 10:57. Показов 2209. Ответов 5
Метки нет (Все метки)
Доброго времени суток. Имеется такой код в ядре Linux:
После некоторого раздумья я пришел к такому варианту:
Судя по получившимся результатам, в случае нарушений strict aliasing, код работает примерно на 20% медленнее. Другое дело, что применения флага -fstrict-aliasing, похоже, вообще не повлияло на скорость работы кода. Вопрос в следующем - означает ли это, что применение -fstrict-aliasing само по себе не оптимизирует код, а лишь позволяет выявлять (вкупе с -Wstrict-aliasing) то, что файл нарушает strict aliasing?
0
|
|||||||||||||||||||||
| 13.09.2015, 10:57 | |
|
Ответы с готовыми решениями:
5
warning: dereferencing pointer 't' does break strict-aliasing rules Strict aliasing и memcpy Каламбур типизации и strict aliasing |
|
|
||||
| 13.09.2015, 11:43 | ||||
Сообщение было отмечено Radical_Dreamer как решение
РешениеДобавлено через 2 минуты
5
|
||||
|
0 / 0 / 0
Регистрация: 13.09.2015
Сообщений: 16
|
|
| 13.09.2015, 12:42 [ТС] | |
|
Evg, спасибо за подробный и развернутый ответ. Просто встречал пример на хабре, который вроде бы как после оптимизации заработал в 1.5 раза быстрее(хотя лично мне не удалось получить какой-либо разницы), а также замены преобразования типов на memcpy на gerrit'е cyanogenmod'а, я уж было подумал, что эта оптимизация чего-либо стоит. А так получается, в "лучшем" случае отгенерирует какой-нибудь некорректный код ценой ускорения, которого даже замерить трудно. Еще раз прогнал бенчмарк, но с -O3, и теперь во всех случаях получился примерно одинаковый результат. Полагаю, вопрос закрыт, и тему можно закрыть.
0
|
|
|
|
||
| 13.09.2015, 13:21 | ||
|
Насчёт ускорения - множество оптимизаций выглядят примерно так же: каждая даёт привар по чуть-чуть. Но оптимизаций много, и в сумме они дают хороший привар. Для каждой оптимизации есть специфичная область применения и на каждую оптимизацию можно написать синтетический код, который даст весьма ощутимое ускорение. Сама оптимизация отдельно взятая может вообще не иметь никакого эффекта, но имеет сильный эффект для оптимизаций, работающих после неё. Так что тут всё слишком сложно. Конкретно strict aliasing конкретно на интеле большого привара не даёт, т.к. на интеле аппаратура в этом месте хорошо работает, а кэша много. Для других процессоров эффект от strict aliasing'а вполне может оказаться намного большим, чем 1%
1
|
||
|
|
|
| 22.06.2016, 14:52 | |
|
До кучи сюда подкину ссылок, чтобы всё было в одной теме
Часто требуется сделать "битовое копирование". Типа того, что из переменной float32 получить битовый образ в переменную int32. Есть разные способы, но не все они формально корректны с точки зрения strict aliasing rules: Битовый формат согласно спецификации IEEE 745 В одной из тем, посвящённой union'ам, присутствует выдержка из стандарта: Union что из себя представляет? Union что из себя представляет? Вкратце с точки зрения стандарта суть сводится к тому, что одновременно читать-писать можно только в одно из полей union'а Добавлено через 4 часа 40 минут Вот ещё хорошая ссылка по теме https://habrahabr.ru/post/114117/
1
|
|
|
|
|
| 07.04.2017, 09:51 | |
|
0
|
|
| 07.04.2017, 09:51 | |
|
Помогаю со студенческими работами здесь
6
Union, new placement, strict-aliasing, cross-platform
Реализовать 2 статических анализатора исходного кода, которые будут проверять правила оформления кода Оптимизация методом Ньютона (нахождение точки минимума). Оптимизация кода Оптимизация кода. Замер времени выполнения части кода. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|