优化代码:比p++快++p

Optimized code: is ++p faster than p++?

本文关键字:++p p++ 代码 优化      更新时间:2023-10-16

可能重复:
C++中的i++和++i之间是否存在性能差异?

C++中,我看到人们经常在for循环或其他地方使用++p,在这些循环中,您希望增加值,但不使用返回值。我听说这更有效,因为p++在递增之前返回值,因此需要临时空间。

但是,它感觉即使是一个非常无知的编译器也会将返回值作为死代码(只要增量代码是内联的,这样编译器就可以看到返回值是不必要的)。

我试图想出一个很好的例子,在这个例子中,使用某种迭代器,iter++实际上会创建副本(即使没有使用iter++的返回值。

毕竟,当我们使用迭代器编写代码时,我们也不会经常考虑寄存器分配。

我学会了使用p++,因为这就是我从书中学到的。在不使用返回值的情况下选择++p是一种过时的做法,还是只是优雅编码的一部分?为什么这种语言不叫++C呢?

p++只有在++p不执行任务时(即,当您实际使用返回值时)才会变慢。否则,编译器会将代码优化为相同的内容。

人们更喜欢使用++i而不是i++,因为它更好地描述了您想要做的事情:增加i,而不是增加i并返回旧值。当然,你倾向于坚持旧习惯。如果你习惯于编写i++,那没关系,除非你工作的公司的编码标准要求你使用++i

D&E: "我选择C++是因为它很短,很好解释,而不是";形容词C在C中,取决于上下文;接下来"继任者;或";增量;尽管它总是发音为";加号"C++及其名称亚军++C是笑话和双关语的丰富来源——几乎所有这些在名字被选择之前就已经为人所知并受到赞赏。名称C++是由Rick Mascitti提出的。它于年12月首次使用1983年,当它被编辑成[Stroustrup,1984]的最终副本时[Stroustrup,1984c]。

TC++PL的第一章:"C++这个名字(发音"参见加号")由Rick Mascitti于1983年夏天创造。这个名字意味着从C开始的变化的进化性质"+"是C增量运算符。稍短的名称";C++";是语法错误;它也被用作一个无关的名称语言C语义的鉴赏家发现C++不如++C。这个语言不叫D,因为它是C的扩展而不是试图通过删除功能来解决问题。对于另一个C++名称的解释,参见[Orwell,1949]的附录

酱汁。

根据迭代器的不同,创建副本可能是一项非常耗时的任务(想想二进制搜索树的天真的、基于堆栈的迭代器)。我想你已经意识到了,这不是你真正的问题:)。无论如何,据我所知,编译器不需要优化I++到++I。

由于不需要优化它,我认为最好谨慎行事,坚持++I。

相关文章:
  • 没有找到相关文章