社区
其他
帖子详情
关于c中的“++”与“+=”的效率
wj19451880
2005-01-19 07:31:38
小弟刚遇到个问题,是关于运行的效率的
在C语言中有n++,可以实现加一,也可以用n +=1来实现
问题就来了,后者的运行花费的时间是前者的多少?假设是x86的
我的感觉是一样的啊,又不想是移位的那种算法又差别,都用三条汇编就完成的。
还有能不能把C中常用运算指令的运行效率跟大家说说~~~~
谢谢!!!!!!!!!
...全文
582
21
打赏
收藏
关于c中的“++”与“+=”的效率
小弟刚遇到个问题,是关于运行的效率的 在C语言中有n++,可以实现加一,也可以用n +=1来实现 问题就来了,后者的运行花费的时间是前者的多少?假设是x86的 我的感觉是一样的啊,又不想是移位的那种算法又差别,都用三条汇编就完成的。 还有能不能把C中常用运算指令的运行效率跟大家说说~~~~ 谢谢!!!!!!!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
WangWeiGK
2005-04-15
打赏
举报
回复
钻牛角尖。
关于效率的问题不应该在这上面纠缠太多吧?
这是与编译器实现纠缠在一起的,没有绝对的答案。
xueqt
2005-04-10
打赏
举报
回复
效率相同,具体说明见
http://blog.csdn.net/xueqt/archive/2005/04/10/341628.aspx
xueqt
2005-04-10
打赏
举报
回复
效率相同,具体说明见
http://blog.csdn.net/xueqt/archive/2005/04/10/341628.aspx
xueqt
2005-04-10
打赏
举报
回复
效率相同,具体说明见
http://blog.csdn.net/xueqt/archive/2005/04/10/341628.aspx
AruS
2005-03-26
打赏
举报
回复
实际上 n+=1 要比 ++n快。。。
如果编译器 可以把 n+=1 优化成 ++n
++n 比 n++快,后者要创造一个临时变量以便返回
AruS
2005-03-26
打赏
举报
回复
NO,这个是要看编译器的。。。
PDD123
2005-03-26
打赏
举报
回复
用的地方都不一样。
gudengyeren
2005-03-25
打赏
举报
回复
i应该差不子多少吧,计算机运行那么快
weigoal
2005-02-17
打赏
举报
回复
一样的
XueBoy163
2005-02-17
打赏
举报
回复
N++的汇编是INC N吧?
CodeProject-Jerry
2005-02-16
打赏
举报
回复
反正都比 n = n + 1快
seedundersnow
2005-02-11
打赏
举报
回复
如果允许编译优化,通常应当是一样的。
wj19451880
2005-02-05
打赏
举报
回复
不好意思哈,这几天出差刚回来,才看到。谢谢朋友们的支持。
我在想的时候是遇到这样的问题,就是在一个缓冲里边取的是单个递增的(在网络中接受服务器的原始12位A/D(速率为单通道64K/采集卡)和其它的开关数据,由于数据量比较大,所以要考略效率问题),在定义协议的时候就是在客户端是用按通道排序好,还是按采样的次序排序的好,便于客户机的处理(客户机还有相当的任务要做,所以需要考略)。
下面假设是32通道的抽取数据的话:
基本的汇编意思的是:
a++: lea al memory
add al 1
mov al memory
a+=32: lea al memory
add al 32
mov al memory
如果是将a设置为寄存器变量的话可以提高大概3~5倍,但这常常是不允许的,况且还要经常的读取,顶多不过2倍。估计的。
我希望有哪位朋友能将其它的C 中的实现相同功能的语句进行效率排序,就像移位指令和乘除法指令一样的有很大的差别,我暂时还没有收集到这方面的“经书”,所以希望有朋友能把这些相关的资料贴上来供大家分享。谢谢
很感谢楼上的僵哥的费心回帖。
僵哥
2005-02-04
打赏
举报
回复
不好意思,上述测试代码有误,通过C转出的汇编代码看,效果是一样的。也就是说
a++与a+=1是等效的,写时可能写的是a++或a+=1但是编译器会转换为a=a+1,所以是等效的。
僵哥
2005-02-04
打赏
举报
回复
试验证明后者比前者效率高;
用下面的代码可以测得
======================
__int64 m;
__int64 n;
unsigned int s1,s2,e1,e2;
m=n=0;
s1=GetTickCount();
for(__int64 i=0;i<100000000;i++)m++;
e1=GetTickCount();
s2=GetTickCount();
for(__int64 i=0;i<100000000;i++)n+=1;
e2=GetTickCount();
ShowMessage("m++:"+IntToStr(e1-s1)+" n+=1:"+IntToStr(e2-s2));
======================
xcyxl
2005-02-02
打赏
举报
回复
有道理
zbtsv2005
2005-02-01
打赏
举报
回复
说的对
extreme0001
2005-01-28
打赏
举报
回复
前者效率更高,前者只在Register中运行
Goldbach
2005-01-27
打赏
举报
回复
gz
Kshape_zh
2005-01-24
打赏
举报
回复
后者的效率明显要快许多
加载更多回复(1)
【顶级SCI复现】高比例可再生能源并网如何平衡灵活性与储能成本?虚拟电厂多时间尺度调度及衰减建模(Matlab代码实现)
内容概要:本文围绕高比例可再生能源并网背景下虚拟电厂的多时间尺度调度问题展开研究,重点解决系统灵活性与储能成本之间的平衡挑战。通过构建日前调度与日内调度的双层优化模型,整合风电、光伏等不确定性出力与多用户负荷的灵活性资源,同时引入储能系统容量衰减模型,提升调度方案的经济性与可持续性。研究采用Matlab进行仿真验证,实现了对储能充放电行为的精细化管理,并结合先进优化算法求解非线性约束下的复杂调度问题,有效降低了系统运行成本,增强了电网对可再生能源的消纳能力。; 适合人群:具备电力系统、可再生能源或优化调度基础知识的研究生、科研人员及工程技术人员,熟悉Matlab编程与数学建模者更佳; 使用场景及目标:①用于高比【顶级SCI复现】高比例可再生能源并网如何平衡灵活性与储能成本?虚拟电厂多时间尺度调度及衰减建模(Matlab代码实现)例新能源接入场景下的虚拟电厂能量管理系统设计;②支撑含储能系统的多时间尺度调度策略研究,提升调度精度与设备寿命;③为SCI论文复现与科研课题提供可扩展的技术框架与代码基础; 阅读建议:建议结合文
中
提到的Matlab代码实现部分,逐步运行并理解模型构建、约束设定与求解流程,重点关注储能衰减建模与灵活性资源协调机制的设计思路,宜配合YALMIP、CPLEX等工具包进行调试与优化。
数字集成电路分析与设计
本书系统阐述了数字集成电路的基本原理与设计方法,涵盖MOS晶体管、CMOS门电路、动态逻辑、低功耗设计及存储器架构。结合工艺发展与电路性能,深入讲解从器件物理到系统集成的关键技术,适合集成电路工程师与相关专业师生阅读。
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)
内容概要:本文研究动态环境下多无人机系统的协同路径规划与防撞问题,提出基于Matlab代码实现的解决方案。通过构建动态环境模型,结合智能优化算法与路径规划策略,实现多无人机在复杂环境下的高效协同飞行与实时避障。重点解决无人机之间的路径冲突、通信协作与安全性保障等问题,确保系统在动态变化环境
中
的鲁棒性与实时性。文
中
提供了完整的Matlab仿真代码,便于复现实验结果并进行进一步研究。; 适合人群:具备一定Matlab编程基础,从事无人机、智能控制、路径规划等相关领域研究的科研人员及研究生;适用于有SCI论文复现需求的研究者。; 【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现) 使用场景及目标:①用于多无人机系统在动态环境
中
的路径规划与协同控制算法开发;②支撑避障算法设计与仿真验证;③辅助高水平学术论文(如SCI期刊)的复现与创新研究; 阅读建议:建议结合文
中
Matlab代码进行仿真实践,深入理解算法实现细节,并可根据具体应用场景调整参数或扩展功能,如引入更多约束条件或优化目标。
java项目之华美家装预算系统(完整前后端+说明文档+mysql).zip
环境说明:开发语言:JavaJDK版本:JDK1.8数据库:mysql 5.7数据库工具:Navicat11开发软件:eclipse/idea
其他
256
社区成员
6,541
社区内容
发帖
与我相关
我的任务
其他
其他产品/厂家
复制链接
扫一扫
分享
社区描述
其他产品/厂家
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章