【发布时间】:2020-05-31 05:47:35
【问题描述】:
我在主函数中声明了一个数组:
float A[n][n];
我的目标是将其传递给带有 restrict 关键字的函数:
void func(int n, float restrict A[][n])
我尝试了上面的语法,但没有得到预期的运行时间优化。我还看到了一维数组的这种语法:
void func(int n, float A[restrict])
【问题讨论】:
-
运行时间不需要有任何变化。你为什么期望有任何?
-
我预计运行时间会减少,因为我读到编译器会对指针别名执行额外检查,包括函数参数中的数组引用。通过告诉编译器不要进行这些检查,我预计运行时间会减少。
-
你只有 一个 指针参数。限制意味着它不能指向您可以在函数中使用的任何其他
floatarray,或者您使用的任何其他外部 float pointer 不能指向数组元素。如果甚至没有使用这样的指针,就不可能有任何优化效果。 -
谢谢。但实际上我还有两个浮点数组被传递给 func,所以我认为它可能适用于此。
标签: c function multidimensional-array parameters restrict-qualifier