【博客27】写能得到 "返回值优化(RVO)" 的代码!

内容: 今天记录一下编译器的RVO优化,它的作用就是能够让你的函数,在按值返回的情况下,避免多构造无谓的临时变量,当然,编译器为你提供优化的同时也需要你的配合,这样才能发挥效率。老规矩,代码说事哈。

无法优化代码:
在这里插入图片描述
结果:
在这里插入图片描述
分析:大家可以看到,这时候无法进行优化,还是多产生了一个临时对象,用于拷贝构造出你要的对象,原因是你起了result这个名字,编译器希望优化的是非匿名的对象。所以你应该直接返回匿名的临时对象,以让编译器帮你优化它。

优化代码:
在这里插入图片描述
结果:
在这里插入图片描述
分析:这时候编译器直接帮你构造出你想要的对象了,避免了产生无谓的临时对象。

建议:在写代码的时候,尽量写出能让编译器帮你优化的代码,比如此例子可以使得你即使按值传递也不会去构造多余的对象,提高了效率。同时,多了解编译器的优化原理,以及编译原理应该会对我们写代码的能力有很大的提升。

大三学生一枚,文章均非抄袭或者模仿,均为原创,仅代表个人观点,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。

猜你喜欢

转载自blog.csdn.net/qq_43684922/article/details/89498110