我知道通过引用传递对象可以显着提高速度,因为相比之下,我们仅传递值时就避免了调用不必要的构造函数。
1)在类中具有对平凡成员数据的引用或指针是否有意义int&some_int或int * p_int在某些Foo中?
2)特别是,如果无论如何我想在免费存储区上创建所有类对象,那么从任何内存获取方面来说,声明像int * p_int这样的类成员是否有意义?
谢谢
最佳答案
最快的方法是如果值适合处理器的寄存器,则通过副本传递值。编译器将加载处理器的寄存器,然后调用该函数。
对于较大的数据,通过引用传递和通过指针传递之间可能没有速度差异。在这两种情况下,都必须先引用指针和引用,然后才能使用它们,从而需要额外的指令。
同样,要衡量的一种情况是通过复制将结构传递给函数。这将涉及三个操作:在接收端将变量复制到堆栈,增加堆栈大小:在堆栈中复制变量。
提高性能的目的是设计使用寄存器的功能,并减少加载和存储到内存的数量。
例如,在ARM7上,从内存中的变量加载寄存器:
用变量的地址加载寄存器。
通过将地址与寄存器相对应来加载另一个寄存器。
通过将地址嵌入指令中,某些处理器可以直接从内存中加载。
在以这种方式进行编码之前,请分析正确且健壮的代码,以查找性能瓶颈。
关于c++ - 我是否还应该将类成员数据传递为速度引用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19914588/