|
|
1
49
i++:
++一:
启用优化后,很可能生成的程序集是相同的,但是++i更有效。
|
|
|
2
37
我会在其他地方寻找优化潜力。 |
|
|
3
7
效率不应该是你关心的问题:它是 意思 不 同样,除非它们是独立的:一个操作值的使用前,另一个操作后。 int i; 库特<&书信电报;i++//返回1 int i; i=1; 库特<<++一,//返回2 当意义不重要时,大多数编译器都会将++i和i++(比如在for循环中)转换为相同的机器/虚拟机代码。 |
|
|
4
5
这在现代编译器上并不重要。
与
现代编译器会发现
|
|
5
3
这很重要!特别是如果你在C++的土地上使用自定义迭代器协议…
|
|
|
6
2
++对于运算符++的非平凡实现,i可能更有效,但即使在这种情况下,编译器也可能能够优化中间临时值。 |
|
|
7
2
++我不需要临时变量来存储内容。你可以这样想: ++我
我++
看见Postincrement需要一个临时变量。假设编译器没有为您将其全部分类,这几乎可以肯定。 当然,更重要的是程序逻辑;你冒着遇到的风险 The Sad Tragedy of Micro-Optimisation Theatre 如果你对此过于担心……:) |
|
8
2
在C++中,我相信它们有不同的用途,这取决于你想要变量更新的时间。 效率不应该决定你什么时候使用一种方法而不是另一种方法,但我认为无论哪种方法,它们的效率都是一样的。 |
|
|
9
0
除非我遗漏了什么,否则它们应该有同样的效率。它们都应产生一条add指令。这只是add指令发生在哪里的问题:在代码行的开头还是结尾。 |
|
|
10
0
|
|
|
11
0
独立的“i++;”或“++i;”应该生成同样高效的代码。如果你在一个表达式中使用它,“副作用”就起作用了,区别就来了。 也就是说,曾经有一段时间,当“全世界都是Vax”的时候,编译器很糟糕,人们说++i比i++更高效,即使是在“for(i=0;i<N;+++i)”类型设置中。 |
|
|
12
0
一般来说,使用++i比使用i++更有效。 原因很简单,++i与 i+=1; 然而,i++等于 tmp=i;i+=1;
但如上所述,这对足够聪明的编译器几乎没有影响,因为它将优化未使用的操作。对于许多解释语言(例如:PHP),对于++i,速度的提高可能最小;但这一增长微不足道。 |
|
13
0
输入i++通常比较容易,因此在生产时间方面效率更高。 说真的,如果 我 是本机数据类型(如int、double等)——没有区别。
|
|
14
0
++在x86汇编中,在没有优化的情况下,我使用的处理器指令比i++少一条。 |
|
15
0
没有区别。使用最有意义的结构。 如果您的应用程序运行缓慢,我可以向您保证,它永远不会因为整数增量操作中的速度差异而出现。如果是,那就是编译器中的一个严重错误。速度 应用程序中的问题将是算法效率低下、等待I/O等。 不要担心你没有的问题。 Premature optimization is the root of all evil . |
|
16
0
Is there a performance difference between i++ and ++i in C? 我想补充一点,你应该选择更适合你需要的。除了在时间最关键的应用程序中,它并不重要。同样从学术角度来看,最好编写能够表达您需要的代码,并最终进行优化。 |
|
17
0
答案没有对错之分。 这取决于:
|
|
18
0
这取决于上下文,例如:
在这种情况下,“x”将等于“i”,只有在这之后,“i”才会增加1。
在这种情况下,“i”将增加1,然后“x”的新值将分配给“x”。 在“for”循环的情况下,除了性能(++i更快)之外,没有什么明显的区别。 |
|
19
0
|
|
|
20
-1
很难精确地回答这个问题,因为它取决于编译器/解释器的实现。 但一般来说,您可以大致将i++扩展到以下指令:
你不能只说++i比i++快,因为语言实现非常智能,当你知道你不能访问i++的临时值时,它们可以优化这些指令。这通常发生在例如for循环中。所以在很多情况下都是一样的。
|
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |