gpt4 book ai didi

c++ - 我还应该传递类成员数据作为速度引用吗?

转载 作者:行者123 更新时间:2023-11-28 03:05:05 25 4
gpt4 key购买 nike

我知道通过引用传递对象可以显着提高速度,因为相比之下我们仅通过值传递,它避免了调用不必要的构造函数。

1) 在类中引用或指针指向普通成员数据是否有意义,例如某些 Foo 类中的 int& some_int 或 int* p_int?

2) 特别是,如果我无论如何都想在免费存储中创建所有类对象,那么声明一个像 int* p_int 这样的类成员在任何内存增益方面是否有意义?

谢谢

最佳答案

最快的方法是通过复制传递值如果它们适合处理器的寄存器。编译器将加载处理器的寄存器,然后调用该函数。

对于较大的数据,按引用传递和按指针传递可能没有速度差异。在任何一种情况下,指针和引用都必须在使用之前被引用,因此需要额外的指令。

此外,要测量的一种情况是通过复制将结构传递给函数。这将涉及三个操作:将变量复制到堆栈,增加堆栈大小,在接收端:从堆栈复制变量。

提高性能的目标是设计函数以使用寄存器并减少加载和存储到内存的数量。

例如,在 ARM7 上从内存中的变量加载寄存器:

  • 用变量的地址加载一个寄存器。
  • 通过使用地址引用寄存器来加载另一个寄存器。
    一些处理器可以通过在指令中嵌入地址直接从内存加载。

在以这种方式编码之前,分析您正确且健壮的代码以找出性能瓶颈。

关于c++ - 我还应该传递类成员数据作为速度引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19914588/

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