Компилятор GCC C ++ учитывает __restrict - операторы? - PullRequest
2 голосов
/ 19 августа 2010

Я исследовал влияние __stricting определенных указателей в C ++ - коде, при компиляции его с помощью GCC-компилятора.

Оказалось, что не только время выполнения остается совершенно таким же, нокажется, что исполняемый файл не изменился, размер в байтах точно такой же, как и раньше.

Моя версия GCC

gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux)

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

Код выполняет много операций обработки чисел, он хотел бы включить егов целях тестирования.Вы можете помочь?

1 Ответ

7 голосов
/ 19 августа 2010
Спецификаторы

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

Итак, вы добавили некоторые квалификаторы restrict в свой код.Но использовался ли какой-либо из них в контексте, где они действительно имеют значение, то есть где они фактически дают компилятору больше свободы для оптимизации кода?В противном случае вы не должны ожидать, что ваш код изменится.

...