gpt4 book ai didi

c++ - 为什么指针更快更高效

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:13 25 4
gpt4 key购买 nike

我在 C book 中读到这篇文章:

Pointers have several uses, including: • Creating fast and efficient code • Providing a convenient means for addressing many types of problems • Supporting dynamic memory allocation • Making expressions compact and succinct • Providing the ability to pass data structures by pointer without incurring a large overhead • Protecting data passed as a parameter to a function. Faster and more efficient code can be written because pointers are closer to the hardware. That is, the compiler can more easily translate the operation into machine code. There is not as much overhead associated with pointers as might be present with other operators.

问。 “编译器轻松地将操作转换为机器代码”与更快的代码工作有何关系?编译器可能更容易转换,但它如何影响创建可执行文件的速度?

问。因为,最后一切都被转换成机器指令,如果我宁愿传递普通变量,使用指针如何提供一些特殊的加速?

有人可以提供一些关于使用指针如何使程序更快的见解吗?

P.S. 我知道传递一个指针与其传递一个巨大的“对象”相比会更好,因为复制的资源会更好,还有什么比指针更受欢迎的吗?

最佳答案

那句话声称使用指针的代码更快,但它并没有说比什么更快。

最常见的说法是使用指针的代码比使用数组索引的等效代码更快。例如:

char s[] = "hello, world";
char *p = s;
while (*p != '\0') {
/* do something with *p */
p ++;
}

对比

char s[] = "hello, world";
int i = 0;
while (s[i] != '\0') {
/* do something with s[i] */
i ++;
}

非常古老的 c 编译器可能为第一个版本生成比第二个版本快得多的代码。对于现代优化编译器,它不太可能产生任何影响。一个好的编译器甚至可能为两者生成完全相同的机器代码(我没有测试过)。

编写清晰 C 代码并让编译器生成最佳机器代码来实现它更为重要。

关于c++ - 为什么指针更快更高效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24599815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com