指针和执行速度

pho*_*xis 6 c pointers

一些博客和网站在讨论指针是有益的原因之一是因为"指针"的程序中的"执行速度"会好于没有指针.我能解决的问题是:

  • 取消引用单个位置需要两次(或更多次)内存访问(取决于间接数).与直接使用相比,这将增加执行时间.

  • 将指向大型数据类型的指针传递给函数(如结构)可能是有益的,因为只有结构/联合的地址被复制并且它不会被值传递.因此在这种情况下应该更快.

例如,只需强制引入指针而不需要:

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? 
Run Code Online (Sandbox Code Playgroud)

我检查了汇编程序输出使用gcc -S -masm=intel file.c指针版本有很多加载内存并存储除直接方法之外的引用.

我错过了什么吗?

注意:问题与代码无关.代码只是一个例子.不考虑编译器优化.

Mar*_*ers 6

我认为你的结论基本上是正确的.作者并不是说使用更多指针总是会加速所有代码.这显然是胡说八道.

但有时候将指针传递给数据而不是复制数据会更快.