一些博客和网站都在谈论指针是有益的,原因之一是因为有指针的程序比没有指针的程序的“执行速度”要好。我能解决的是:
取消引用单个位置需要两次(或更多)内存访问(取决于间接次数)。与直接使用相比,这将增加执行时间。
将指向大型数据类型的指针传递给函数(如结构)可能是有益的,因为只有结构/联合的地址被复制,而不是按值传递。因此,在这种情况下它应该更快。
例如,只需强制引入指针而无需任何需要:
int a, b, *p, *q, c, *d;
p = &a;
q = &b;
d = &c
// get values in a, b
*d = *p + *q; // why the heck this would be faster
c = a + b; // than this code?
我使用指针版本检查了汇编器输出gcc -S -masm=intel file.c
,与直接方法相比,指针版本有很多加载内存和解引用存储。
我错过了什么吗?
注意:这个问题不仅仅与代码有关。代码只是一个例子。不考虑编译器优化。