问题描述
最近,我知道了 C 限制指针关键字,它可以改进指针别名的优化。
您可以在此处查看restrict关键字的详细信息。 (https://en.wikipedia.org/wiki/Restrict)
限制指针有很多简单而微小的例子..但我想知道是否有任何现实世界的限制指针项目?
任何使用限制指针的相关开源项目都会受到我的赞赏:)
谢谢。
解决方法
许多标准 C 库函数使用 restrict
,例如 void *memcpy(void * restrict s1,const void * restrict s2,size_t n);
。
FastPFor 中使用了它,FastPFor 是 Daniel Lemire 的一个注重性能的库。请参阅:https://github.com/lemire/FastPFor/blob/master/src/bitpacking.cpp
在 C++ 中,它通常拼写为 __restrict__
,因为 C 语言标准化了 restrict
,但 C++ 没有(至少从 C++20 开始)。但它做同样的事情。
如果在它们之间复制数据,告诉编译器两个指针(或引用)没有别名对于性能来说非常重要。通常,查找具有多个相同类型的指针或引用参数的函数,并且其中至少有一个被写入。