相关疑难解决方法(0)

为什么++我可能与i + = 1表现不同

显然是在阅读了旧标题之后

为什么is ++i fster than i+=1甚至存在这样的问题

人们没有费心去彻底阅读这个问题.

问题在于人们提出这个问题的理由!这是关于为什么编译器会在++i和之间产生差异的原因i+=1,并且是否有任何可能的情况才有意义.虽然我很欣赏你所有的诙谐和深刻的评论,但我的问题并非如此.


好吧,好吧,让我试着用另一种方式提出问题,我希望我的英语足够好,这次我可以表达自己而不会被误解,所以请阅读.让我们说有人在一本10年前的书中读到这篇文章:

使用++ i over i = i + 1可以获得性能优势.

我并不热衷于这个特定的例子,而是更多或更少地谈论.

显然,当作者写这本书时,对他来说是有道理的,他不仅仅是弥补了这一点.我们知道现代编译器不关心你是否使用++i,i+=1或者i = i + 1代码将被优化,我们将具有相同的asm输出.

这似乎很合乎逻辑:如果两个操作执行相同的操作并且具有相同的结果,则没有理由编译++i成一个东西,而是i+=1另一个东西.

但是自从这本书作者写下来之后,他已经看到了的不同之处!这意味着某些编译器实际上会为这两行产生不同的输出.这意味着,由编译器的家伙有一些原因,治疗++ii+=1不同.我的问题是他们为什么会这样做?

是不是因为那些日子很难/不可能使编译器足够先进以进行这样的优化?或者,也许在一些非常具体的平台/硬件/在某些特殊情况下它实际上是有意义的,使之间的差异++i,并i+=1和其他同类的东西?或者它可能取决于变量类型?或者编译器开发者只是懒惰?

c c++ optimization performance

2
推荐指数
2
解决办法
1042
查看次数

标签 统计

c ×1

c++ ×1

optimization ×1

performance ×1