代码A:
string a = "Hello World";
for (int i=0; i<1000000; ++i)
const string b = a;
代码 B:
string a = "Hello World";
for (int i=0; i<1000000; ++i)
const string &b = a;
如果我分别运行这两段代码并且测量CPU时间,Code B的速度比Code A快大约2.5倍。
除了像char
、int
、float
等原始类型以外,我学到获取原始引用会比复制它更快。
虽然在大多数情况下差异几乎可以忽略不计,但是是否可以考虑将const string
类型(以及其他非原始类型)总是指向引用作为良好的惯例呢?
sizeof
比sizeof(void*)
大,那么始终通过const引用传递参数;否则就通过复制传递。如果您想要更改对象,则无论大小都应该传递非const引用。 - DeiDeisizeof
并不总是一个好的复制时间指标。 - Daniel Ha
)的生命周期内使用包含的引用(b
)。 - Ramaret
指令或其他指令。 - Kaz