Реальный пример ключевого слова C limited

Недавно я узнал о ключевом слове C, ограничивающем указатели, которое может улучшить оптимизацию сглаживания указателей.

Вы можете увидеть подробности ограничения ключевого слова здесь. (https://en.wikipedia.org/wiki/Restrict)

Есть много простых и крошечных примеров ограничения указателя... но мне интересно, есть ли какой-нибудь реальный проект ограничения указателя?

Буду признателен мне за любые связанные проекты с открытым исходным кодом, использующие указатель ограничения :)

Спасибо.


person 방성원    schedule 31.03.2021    source источник
comment
Как язык С++ относится к этому вопросу?   -  person eerorika    schedule 31.03.2021
comment
searchcode.com/?q=restrict&src=2&lan=28   -  person Paul Hankin    schedule 31.03.2021


Ответы (2)


Он используется в FastPFor, ориентированной на производительность библиотеке Дэниела Лемира. См.: https://github.com/lemire/FastPFor/blob/master/src/bitpacking.cpp

В C++ это часто пишется как __restrict__, потому что язык C стандартизировал restrict, а C++ — нет (по крайней мере, начиная с C++20). Но он делает то же самое.

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

person John Zwinck    schedule 31.03.2021

Многие стандартные функции библиотеки C используют restrict, например void *memcpy(void * restrict s1, const void * restrict s2, size_t n);.

person Eric Postpischil    schedule 31.03.2021