`
Deo
  • 浏览: 31054 次
  • 性别: 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

分享到:
评论

相关推荐

    C语言程序设计:算法.pptx

    准确、高效 计算机算法类别 数值运算算法 非数值运算算法;3.2 算法的特性 有穷性—在合理范围内可完成 确定性—无歧义性 有零个或多个输入—从外界得到信息 有一个或多个输出—问题的答案 有???性—每步有确定的结果...

    花1K内存实现高效I-O的RandomAccessFile类

    花1K内存实现高效I-O的RandomAccessFile类 自己搜搜这个关键字. 我主要是用来优化Android上多线程断点下载的写文件效率 RandomAccessFile是操作硬盘的,比操作内存的数据慢了几百万倍, 所有有人做出优化,我特上传...

    i.MXRT1052+SDRAM智能面板方案设计软硬件资料(RT1052主板+语音识别板+电源板 3款AD设计的硬件工程文件,smart_panel软件源码)

    i.MX-RT1052+SDRAM智能面板方案设计软硬件资料(包括RT1052主板+语音识别板+电源板 3款ALTIUM设计的硬件工程文件,smart_panel-1.0.2软件源码),硬件包括完整的原理图PCB文件。 基于高性能ARM Cortex-M7内核的RT...

    java高效开发

    java高效开发 在重要的循环里,消除循环终止判断时的方法调用。  例如:将 for(int i=0; i();i++){ ... } 替换为… 尽量减少对变量的重复计算 for(int i=0; n=collection.size();i;i++){...} 通常把大循环放在...

    i2 analyst notebook 8.5最新版演示

    i2 Analyst’Notebook为高效链接和时间进程分析提供了最适宜的条件。事实上,i2 Analyst’Notebook是全球同类分析软件的标准,也是重要的图表应用软件。无论你是在执法部门、调查机构,还是商业部门工作,该软件可以...

    iPhone/ipod touch/ipad文件传输工具 ifunBox_sc中文版(数据线版)支持

    iFunBox:PC 端程序,简单、高效,只需要 iTunes 环境支持,数据线传输,速度一般 10MB/S i-FunBox v0.99版本, 更新信息: 1. 传输文件到电脑: 支持iBooks的ePubs图书文件,语音备忘录Voice Memo的.m4a 格式。 2....

    最高效的循环右移算法

    //问题的关键在于找到原来的第i个元素现在在哪里,通过观察可以发现在a[i%K]的位置,下面的代码实现了a[i%K]和a[i+K]的互换 if(K==pp)pp=0; temp=arr[pp]; arr[pp]=arr[qq]; arr[qq]=temp; } TZshift1...

    iPhone 5s Keyboard iOS 7 3.12

    iPhone 5s Keyboard iOS 7iPhone 5s Keyboard iOS 7是一款高效实用的应用程序,每一位Android用户都可以通过它将自己Android设备中的键盘替换成为iPhone 5s的键盘,简单便捷。 你需要激活设备中的键盘才可以使用这...

    L i n u x 实现免费个人主页

    统, 它具有稳定、高效、强壮等诸多特性, 符合P O S I X规范, 有丰富的开发工具和各类 应用软件, 是一种良好的网络开发与应用平台。在其上实现网站的个人主页系统有着得天独 厚的优势。基于L i n u x 环境的免费个人...

    C ++ 中 的遗传、爬山和模拟退火算法_C++_代码_下载

    该类Individual的主要数据结构是一个 C++11 数组容器,一个类似于向量的模板,但更高效并且需要一个大小(给定的维度为 30)。因此,它的基因组(可能的解决方案)是一个包含 30 个参数类型的数组,其中参数是一个...

    I2 Localization本地化.zip

    链接您的AssetBundles以添加更多本地化内容。 简单高效 在一个位置编辑和预览所有翻译,然后在运行时仅加载当前语言。使用快速查找来访问它。 重复使用翻译 设置文本自动显示为大写,小写,上限,标题大小等。 在...

    可编程的CI/CD引擎:一个可编程的CI/CD引擎,旨在让持续集成和持续交付过程更加灵活和高效

    一个可编程的CI/CD引擎,旨在让持续集成和持续交付过程更加灵活和高效。它的独特之处在于允许用户将整个CI/CD流程放置在容器中运行,从而实现更好的隔离和环境一致性。这个项目提供了一种新颖的方式来管理软件交付...

    花1K内存实现高效I/O的RandomAccessFile类

    NULL 博文链接:https://x7700.iteye.com/blog/1003918

    漫画小说二合一CMS网站系统PHP源码_CI框架.zip

    CI框架PHP漫画小说二合一CMS网站系统源码 内置采集火车头接口带充值和会员功能 在PHP+MYSQL环境下运行的完善而强大的快速建站系统。 经过近多年的开发经验和技术积累,即将成为全网最强漫画+小说系统,在易用性...

    I3C协议V1.1.1版本

    Specification for I3C Basic ;Version 1.1.1; 9 June 2021 ...I3C协议是基于I2C和SPI的协议升级版,为DDR而生,能够兼容I2C,且支持更高的带宽和更低的功率,支持中断功能支持热加入支持错误校验支持仲裁

    iPhone四个步骤高效安装WAPI证书

    在iPhone中,采用四个步骤高效安装WAPI证书。

    课程设计实验——八皇后_VC++游戏

     (a)为解决这个问题,我们把棋盘的横坐标定为i,纵坐标定为j,i和j的取值范围是从1到8。当某个皇后占了位置(i,j)时,在这个位置的垂直方向、水平方向和斜线方向都不能再放其它皇后了。用语句实现,可定义如下三...

Global site tag (gtag.js) - Google Analytics