Одно из больших различий между C/C++ и Fortran, когда дело доходит до скорости, заключается в том, что первые языки используют указатели, которым можно присваивать псевдонимы, и поэтому компилятору необходимо загружать данные на каждой итерации цикла, в то время как в allocatable Fortran такой проблемы нет.
C предлагает ключевое слово ограничения, чтобы вы могли гарантировать компилятору, что указатель не имеет псевдонимов. Стандарт C++ не предлагает такой возможности. Я не хочу использовать расширение поставщика, поскольку меня беспокоит переносимость, но это также важная часть моего приложения. Следовательно, я не хочу полагаться на вещи, выходящие за рамки стандарта, когда они имеют фундаментальное значение для моего приложения.
Есть ли способ гарантировать компилятору C++, что конкретный аргумент-указатель не имеет псевдонима? Будут ли ссылки C++ чем-то полезны (поскольку передача аргументов по значению невозможна, поскольку мы имеем дело с очень большими массивами) или мне следует просто написать эти процедуры на C и вызывать их из моего приложения C++?
Подробнее здесь: https://stackoverflow.com/questions/628 ... ot-aliased