`
Deo
  • 浏览: 32223 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

++i 和 i++ 哪个更高效?

    博客分类:
  • Java
 
阅读更多
在内建数据类型的情况下,效率没有区别;
在自定义数据类型的情况下,++i效率更高!
分析1:
(在自定义数据类型的情况下)
++i返回对象的引用;
i++ 总是要创建一个临时对象,在退出函数时还要销毁它,而且返回临时对象的值时还会调用其拷贝构造函数。
分析2:
i++由于是在使用当前值之后再 +1, 所以需要一个临时变量来转储,而++i 则直接 +1,不存在临时变量的问题。
测试:
【Java code:】
public class Main{
    public static void main(String[] args){
        int i = 0;
        i++;
        ++i;
    }
}
 
 
[Compiled from "Main.java"]
public class Main extends java.lang.Object{
public Main();
  Code:
   0: aload_0
   1: invokespecial #1; //Method java/lang/Object."<init>":()V
   4: return
 
public static void main(java.lang.String[]);
  Code:
   0: iconst_0
   1: istore_1
   2: iinc 1, 1
   5: iinc 1, 1
   8: return
}
2: iinc 1, 1 ;这个是i++
5: iinc 1, 1 ;这个是++i
 
扩展:i=i+1,  i+=1,  i++, ++i 效率比较
++i 最快
i++ 次之,比++i多用一个临时变量
i += 1 第三,需要取地址
i = i + 1 最后,并多用一个临时变量
=============

(1) x = x + 1 它的效率最低,因为其执行过程如下:
    1-1     读取右x的地址;
    1-2     x + 1;
    1-3     读取左x的地址;
    1-4     将右值传给左边的x

(2) x += 1; 他的执行过程是:
    2-1     读取右x的地址;
    2-2     x + 1;
    2-3     将得到的值传给x

分享到:
评论

相关推荐

    ++i,i++,--i,i--终结

    ### 关于“++i, i++, --i, i--”的理解与应用 #### 一、基本概念 在C/C++编程语言中,“++i, i++, --i, i--”是一组非常重要的自增自减运算符。这些运算符主要用于在程序中修改变量的值。了解这些运算符的工作原理...

    关于i++和++i以及左值,右值

    在计算机编程语言的海洋中,...在C++和C语言的编程实践中,理解并正确运用左值和右值、i++和++i的概念,对于编写高效且健壮的代码至关重要。希望本文能够帮助读者在这方面有所收获,为日后的编程工作奠定坚实的基础。

    C# i++and++i

    在C#编程语言中,`i++` 和 `++i` 是两种常见的增量运算符,它们都用于将变量的值增加1。然而,虽然这两者看似相似,但在语义上存在细微差别,尤其是在某些特定上下文中。理解这些差异对于编写高效、清晰的代码至关...

    c++的左值右值 i++与++i的区别.docx

    C++ 中的左值和右值、i++ 与 ++i 的区别 在 C++ 编程语言中,左值(Lvalue)和右值(Rvalue)是两个重要的概念,它们在变量和表达式中的...理解左值和右值、i++ 和 ++i 的区别对于编写正确和高效的 C++ 代码非常重要。

    快速区分一元运算符i++和++i.docx

    在给定的例子中,通过一系列的拆分和分析,我们可以更直观地看到`i++`和`++i`的区别: ```javascript var m = (--i) - (i--) - (i) - (i--) - (i--) ``` 在这个例子中,每一个括号内的表达式都会按照它们的顺序...

    I++ DME1.7

    该协议旨在提供一种通用的方法来连接不同制造商的测量设备与软件系统,从而实现更高效的数据交换和控制。 **标题与描述中的关键词解析:** 1. **I++ DME**:这是一个由多个公司组成的团体开发的接口标准,目的是...

    C语言中++i与i++的区别.docx

    总之,`++i` 和 `i++` 在C语言中代表两种不同的自增行为,理解它们之间的差异对于编写正确和高效的代码至关重要。在编程时,应该根据具体需求选择合适的操作符,并尽可能保持代码简洁易读。对于初学者来说,不要过分...

    php中++i 与 i++ 的区别

    理解这两个操作符的区别对于编写高效和正确的代码至关重要。 1. `++i` 操作符: 当使用 `++i` 时,它首先会增加变量 `i` 的当前值,然后再将其结果赋值给其他变量或进行计算。例如,如果 `i` 的初始值为 2,那么 `...

    为什么(i++)不能做左值,而(++i)可以

    在C/C++中,后缀递增运算符(i++)和前缀递增运算符(++i)都用于将变量增加1,但它们的操作和结果在某些情况下有本质的区别。前缀递增运算符++i先增加变量的值,然后返回新的值。后缀递增运算符i++先返回变量当前的值,...

    C++小知识:用++i替代i++

    为什么我们应该使用++i代替i++?下面我们来解释。 前自增运算符(++i)和后自增运算符(i++)都是用于增量运算的,但是它们的区别在于它们的实现机制。前自增运算符改变了对象的状态并返回对象改变后的状态,不需要...

    编程语言中++i与i++运算符的区别及性能分析

    内容概要:本文详细介绍了前置自增(++i)和后置自增(i++)运算符的区别及其应用场景,涵盖C/C++、Java、JavaScript等多门语言。重点讨论了两者在返回值、执行顺序以及在复杂表达式中的差异,并探讨了编译器优化的...

    Notepad++ Plus_i586 21.10.2 Aurora

    Notepad++ Plus_i586 21.10.2 Aurora,是一款针对Windows操作系统设计的增强型文本编辑器,相较于微软系统自带的记事本,它提供了一系列强大的功能和个性化的选项,为程序员、开发者以及日常用户带来了更为丰富的...

    JS for循环中i++ 和 ++i的区别介绍

    最后,值得一提的是,了解JavaScript中i++和++i的区别,不仅能够帮助开发者在编写for循环时做出更好的选择,同时也能够帮助他们更好地理解其他编程语言(如C++)中的对应概念,因为这些概念在不同的编程语言中可能会...

    【驱动程序】USBCAN-I_I+_II_II+_2A_I windows-all驱动安装.zip

    【驱动程序】USBCAN-I/I+/II/II+/2A_I windows-all驱动安装.zip是一个包含周立功CAN盒子驱动的压缩包文件,主要用于解决USBCAN系列接口设备在Windows操作系统上的连接和通信问题。该驱动程序适用于多种Windows版本,...

    P+F等公司的AS-i V3.0 网关手册

    V3.0是AS-i技术的一个版本,它提供了更高级的功能和更高的数据传输速率。P+F(Pepperl+Fuchs)是一家在工业自动化领域知名的公司,他们生产的AS-i网关是将不同通信协议如Profibus、Modbus和RS232转换为AS-i协议的...

    i++循环与i-–循环的执行效率(递增与递减效率)

    通过对比i--和i++在循环条件判断时生成的汇编指令,可以看到i--循环少了一个比较指令(cmp),这意味着理论上i--循环可能执行得更快。 5. 代码出处:文章最后提到的内容中给出了文章的出处,这可能意味着文章来自于...

    探讨++i与i++哪个效率更高

    总结来说,如果你关心的是性能,特别是处理大量数据或自定义类型时,`++i`通常比`i++`更高效,因为它避免了创建和销毁临时对象以及调用拷贝构造函数的过程。然而,对于内建类型,这种差别通常微不足道,编写代码时应...

    超微X9DRi_3-LN4F+说明书

    针对散热,超微主板设计了高效的散热系统,以保证在长时间运行或高负载环境下,主板和处理器能保持在安全的工作温度。 在安全性方面,X9DRi_3-LN4F+内置了多种硬件防护机制,例如超微的Server Management,支持远程...

    矩阵连乘问题 给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2 ,…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。

    通过以上分析和代码实现,我们可以看到,矩阵连乘问题可以通过动态规划的方法高效地求解。该方法不仅能够找到最优的乘法顺序,还能有效地减少所需的计算资源。这种思路同样适用于其他类似的问题,在实际应用中有着...

Global site tag (gtag.js) - Google Analytics