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

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

Сообщение Anonymous »

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

Подробнее здесь: https://stackoverflow.com/questions/793 ... fic-functi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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