`

i++和i--哪个效率高

    博客分类:
  • C++
阅读更多

for(i = n; i > 0; i--)
{

}

for(i = 0; i < n; i++)
{

}

发现同样的循环次数,前者要比后者快。

原因是,i--操作本身会影响CPSR(当前程序状态寄存器),CPSR常见的标志有N(结果为负), Z(结果为0),C(有进位),O(有溢出)。i > 0,可以直接通过Z标志判断出来。

i++操作也会影响CPSR(当前程序状态寄存器),但只影响O(有溢出)标志,这对于i < n的判断没有任何帮助。所以还需要一条额外的比较指令,也就是说每个循环要多执行一条指令。

如果换成

for(i = 0; i > -n; i--)
{

}

for(i = -n; i < 0; i++)
{

}

那么这时候就是i++比i--效率高了,主要是因为与0比较时可以少一条指令。

不过不知道平台无关的Java是不是一定符合这种规律,因为不同JVM有不同的实现方式。

分享到:
评论

相关推荐

    C++面试题:++i和i++哪个效率高?

     2、我们自定的数据类型,++i效率高于i++,通过运算符重载来给大家说明这一点。 Operator Operator::operator++() { ++value; //内部成员变量 return *this; } Operator Operator::operator++(int) { ...

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

    在自定义数据类型的情况下,++i效率更高! 分析: (自定义数据类型的情况下) ++i返回对象的引用; i++总是要创建一个临时对象,在退出函数时还要销毁它,而且返回临时对象的值时还会调用其拷贝构造函数。 (重载这两个...

    (DIY设计)MicroPython开发板原理图+PCB源文件+源代码等-电路方案

    有些代码的运行效率可以媲美c的效率,并且可以被python直接调用,适合做时间紧迫性,运算复杂度高的应用。 通过内联汇编功能,应用可以完全接入底层运行时,内联汇编器也可以像普通的python函数一样调用。 基于简单...

    12864显示的万年历

    //坐标轴的移动和反转 if(x) { LCDSel(1); SetX(y/8); //set the page address SetY(x); //set the Y adress dat=ReadDatFromLCD12864(); if(flag) dat=dat|(Tab[y%8]); else dat=dat&(~(Tab...

    数据通信与计算机网络作业答案Word版.doc

    (答案仅作参考,可自行补充完善 ) 1)在效率上,报文交换和分组交换不需要预先分配传输带宽,在传突发性数据时可提高 整个网络的信道利用率;而电路交换需要预先分配固定的带宽,没有数据传输的空隙, 信道处于空闲...

    《数据结构》实训报告.doc

    编写一个函数,从一个给定的顺序表A中删除元素值在x到y之间的所有元素,要求以 较高效率来实现。 2. 试写一个算法,在无头结点的动态单链表上实现线性表插入操作 3. 设计一个统计选票的算法,输出每个候选人的得票...

    数据结构实训报告(1).doc

    编写一个函数,从一个给定的顺序表A中删除元素值在x到y之间的所有元素,要求以 较高效率来实现。 2. 试写一个算法,在无头结点的动态单链表上实现线性表插入操作 3. 设计一个统计选票的算法,输出每个候选人的得票...

    数据结构实训报告(2).doc

    编写一个函数,从一个给定的顺序表A中删除元素值在x到y之间的所有元素,要求以 较高效率来实现。 2. 试写一个算法,在无头结点的动态单链表上实现线性表插入操作 3. 设计一个统计选票的算法,输出每个候选人的得票...

    LSI 9260-8i 操作手册

    大家说到服务器自然离不开有关磁盘阵列的话题,磁盘阵列是由磁盘阵列芯片来进行控制 ,想要自己服务器的磁盘阵列更加稳定和更高的效率那么当然就要有适合自己服务器的阵列卡。这里向大家介绍一款LSI的磁盘阵列卡,...

    高精加法源代码

    //此处如改为++z[i+1],效率更高 z[i]-=10; //或者是z[i]%=10,但速度稍慢 if(z[len]&gt;0)//最高位如果进位了,则最大位数加1 len++; if(z[i+1])//小优化 break; } } } return len;//返回位数 } void ...

    c++ 面试题 总结

    段式管理:把主存分为一段一段的,每一段的空间又要比一页一页的空间小很多,这种方法在空间利用率上又比页式管理高很多,但是也有另外一个缺点。一个程序片断可能会被分为几十段,这样很多时间就会被浪费在计算每一...

    1990-2023年定价效率指标-股票市场定价效率-股票定价效率-股价的异质性波动程度

    变量,Effi的数值越小表示股票的异质性风险越大,该股票的定价效率就越高。 样本 选择:全部A股1990-2023年数据(“日个股回报率文件”和“综合日市场回报率 文件”在数据库中均是从1990-12-19开始,所以数据起点为...

    最新JAVA编程题全集_50题及答案

    List&lt;String&gt; temp = list(new StringBuilder(base).deleteCharAt(i).toString(),buff+base.charAt(i)); result.addAll(temp); } return result; } } ++++++++++++++++++++++++++++++++++++++++++++++++...

    VDL-600立式加工中心I/O设备的输入和输出故障分析

    现代数控机床采用了计算机技术,涉及光、机、电和液等很多技术,它具有技术密集和知识密集的特点,具有较高自动化水平和生产效率,发生故障是难免的。我国现有数控机床上的数控系统品种极其繁多,如何在诸多故障现象中,...

    论文研究-Isearch机制分析.pdf

    与一般XML检索引擎的设计相比,Isearch由于结合采用了全文检索引擎的一些技术,有效地控制了索引文件的大小,并保持了较高的检索效率。Isearch系统机制的研究,对于深入了解XML文档检索原理,尤其是拓展XML文档检索...

    酷题(K-Tii) v1.0.3.zip

    酷题(K-Tii)海量试题下载利器是互联网上首款海量试题下载和阅读试题的免费软件。酷题提供182种常见考试试题,历年真题、模拟题、考试心德等多种类型的试题和相关文档。为广大准备考试而奋斗的用户提供海量高质量试题...

    C语言程序设计标准教程

    如356f和356.是等价的。例2.2说明了这种情况: void main() { printf("%f\n%f\n",356.,356f); } void 指明main不返回任何值 利用printf显示结果 结束 实型变量 实型变量分为两类:单精度型和双精度型, 其类型...

    springboot i+redis+mybatis+shiro实现的权限管理系统+极速代码一键生成器

    这是一个基于微型项目开发的架构。权限管理系统,采用shiro实现权限。里面有代码生成器,可基于数据表快速生成crud接口+页面。可学习与商用。非常实用的一套架构。导入idea即配置mysql+即可使用

    shindoyang#I-know#高效率技巧1

    1、如何调用maven窗口 2、在maven窗口一次性执行多个命令 3、新建项目的时候,修改项目变量 4、CodeGlance插件

Global site tag (gtag.js) - Google Analytics