[an error occurred while processing this directive]
|
1) restrict говорит оптимизатору, что он может смело взять данное по указателю, засунуть в регистр, и работать с ним в регистре до упаду. Соответственно, если через какой-то другой указатель это же данное будет изменено, то получится глюк. Два указателя на разные части массива кстати не криминал. В общем юзать аккуратно, зная смысл происходящего :)
2) Еще как может помочь. При конвейеризации цикла часто получается, что цикл может выполняться минимум какое-то кол-во раз. Соответственно компилер, не зная минимального реального числа итераций компилит два цикла - один соптимизированный напрочь, второй - менее соптимизированный, но умеющий от одной итерации исполняться. И ставит условный переход меж них... Это раз. Второе и главное в MUST_ITERATE - это кратность счетчика цикла - если она известна, то компилер может слегка подразвернуть цикл и спараллелить. Тоже полезно.
E-mail: info@telesys.ru