Как обеспечить соблюдение семантики __restrict__ для членов данных класса (в определенных функциях)?C++

Программы на C++. Форум разработчиков
Anonymous
Как обеспечить соблюдение семантики __restrict__ для членов данных класса (в определенных функциях)?

Сообщение Anonymous »

Я оптимизирую критическое приложение C ++ и хочу обеспечить соблюдение семантики для определенных членов данных класса для предотвращения псевдонимы в определенных функциях. Я уже: < /p>
использовал __restrict __ < /code> на членах данных.
объявил саму функцию как __Restritc > В GCC это хорошо компилирует, в Clang я получаю множество ошибок, потому что мне придется ограничить каждую функцию, вызываемую из ограниченного этого указателя (что нецелесообразно в рамках большого проекта и, возможно, приводит к ложным результатам).
проблема: < /strong>
при анализе сгенерированной сборки (
), я заметил, что некоторые элементы данных рассматриваются как потенциально псевдонимы и перезагружаются на каждой итерации цикла, даже если они ограничены. Если я передаю элементы данных как локальные копии и применяю __restrict__, псевдонимы разрешаются, а производительность повышается.
Однако это нарушает интерфейс и делает проект непрактичным.
Вопрос:[/b]
Есть ли способ принудительно ограничить определенные элементы данных при доступе через это в определенной функции? В идеале я хотел бы обеспечить локальное ограничение внутри функции без реструктуризации всего класса или дублирования элементов данных.
Любые предложения или альтернативные подходы к устранению псевдонимов при сохранении удобства использования интерфейса будут оценены по достоинству. .

Подробнее здесь: https://stackoverflow.com/questions/793 ... fic-functi

Вернуться в «C++»