社区
C++ Builder
帖子详情
[送分题] 哪种循环速度快?
cczlp
2007-03-28 09:40:11
最近做对速度很敏感的程序,用到大量循环.想知道那种速度更快.
循环体内执行语句相同.
int i;
// 1
for (i = 0; i < 256; i++)
{
//....
}
//2
i = 256;
while(i--)
{
//......
}
//3
i = 0;
do
{
//....
}while(i++ < 255);
...全文
593
43
打赏
收藏
[送分题] 哪种循环速度快?
最近做对速度很敏感的程序,用到大量循环.想知道那种速度更快. 循环体内执行语句相同. int i; // 1 for (i = 0; i < 256; i++) { //.... } //2 i = 256; while(i--) { //...... } //3 i = 0; do { //.... }while(i++ < 255);
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
43 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zzddqq
2007-04-03
打赏
举报
回复
学习,同时接分。
wanglovec
2007-04-03
打赏
举报
回复
都优化到这地步了 !学习
cczlp
2007-04-03
打赏
举报
回复
for内循环优化后和for本身用的时间查不多了,一个数量级
huzhangyou
2007-04-03
打赏
举报
回复
潜力贴 不得不来捧场
个人同意三十年孤独
应该在for里面的数据处理下功夫
而不是for本身
cheneyhehe
2007-04-02
打赏
举报
回复
都是来接分的啦,哈哈
gel_ink
2007-04-02
打赏
举报
回复
服了你们
cczlp
2007-03-29
打赏
举报
回复
就是mov xor test jz jl 这样的指令, 我昨天晚上查了指令周期,
好像在奔腾CPU上都是两个时钟周期
Myu2006
2007-03-29
打赏
举报
回复
这种优化??
没有必要优化,
更为重要的是优化循环内的代码!!!
dragonhux
2007-03-29
打赏
举报
回复
修正:
// 4
for (i = 255; i >= 0; i++)
{
//....
}
mov [ebp-0x40],0x000000ff
...
dec dword ptr [ebp-0x40]
cmp dword ptr [ebp-0x40],0x00
jnl -0x36
dragonhux
2007-03-29
打赏
举报
回复
有没有人考虑过CPU的一级缓存和二级缓存,及缓存命中的问题?
_________________________________________________________
另外,对于一、二级缓存,由于对于for/while/do都存在jump的问题
所以一、二级缓存的处理,应该差别不大
只是,有一点奇怪在编译的代码中,都没有使用AX/BX等寄存器变量
而是使用的EBP,是不是BCB出于统一和通用的考虑。
其实,自己写汇编最快了 ^_^
dragonhux
2007-03-29
打赏
举报
回复
/----------------------------------------------------
// 1
for (i = 0; i < 256; i++)
{
//....
}
xor edx edx
mov [ebp-0x40],edx
...
inc dword ptr [ebp-0x40]
cmp [ebp-0x40],0x00000100
jl -0x39
//----------------------------------------------------
//2
i = 256;
while(i--)
{
//......
}
mov [ebp-0x40],0x00000100
jmp +0x2d
...
mov ecx,[ebp-0x40]
add dword ptr [ebp-0x40],-0x01
test ecx,ecx
jnz -0x38
//----------------------------------------------------
//3
i = 0;
do
{
//....
}while(i++ < 255);
xor eax eax
mov [ebp-0x40],eax
...
mov ecx,[ebp-0x40]
inc dword ptr [ebp-0x40]
cmp ecx,0x000000ff
jl -0x3b
//----------------------------------------------------
// 4
for (i = 0; i < 256; i++)
{
//....
}
mov [ebp-0x40],0x000000ff
...
dec dword ptr [ebp-0x40]
cmp dword ptr [ebp-0x40],0x00
jnl -0x36
//----------------------------------------------------
^_^
在这里,定义使用
int i
或
register int i;
汇编出来的代码是一样的
C++ Builder 6.0 pack2
complier->code optimization->none/speed
基本一样
constantine
2007-03-29
打赏
举报
回复
有没有人考虑过CPU的一级缓存和二级缓存,及缓存命中的问题?
--------
这个不用考虑吧,这些肯定是在一样的情况下比较的.
theLibra12
2007-03-29
打赏
举报
回复
有没有人考虑过CPU的一级缓存和二级缓存,及缓存命中的问题?
constantine
2007-03-29
打赏
举报
回复
问个问题,你们都说do while语句的汇编最长,需要时间最多,是否有考虑指令的周期.里面的指令到底是几个时间片的??
而且有没有考虑流水线的影响??
海嵌
2007-03-29
打赏
举报
回复
习惯用for()
不过有时还顺便用下goto
还是要习惯一下 do while...
i_love_pc
2007-03-29
打赏
举报
回复
其实用for和while还不是速度方面的考虑,关键是看是否预先知道循环次数。有些地方无法互换。
liuy_sea
2007-03-29
打赏
举报
回复
比较喜欢用for
Y___Y
2007-03-28
打赏
举报
回复
for(register int i = 0; i < 256; i++)更好一点
不过不加register,优化时也可能自动加上
daily66
2007-03-28
打赏
举报
回复
for最快,这个在Pascal里好像也是
测一下就知道了
BeRoy
2007-03-28
打赏
举报
回复
奇怪了,怎么都喜欢用for?我也是...
加载更多回复(23)
JavaScript 中哪一种
循环
最快呢?for
循环
性能比较
在掘金看到的一篇好文章, 感谢作者, 讲解得非常清楚, 文章地址: https://juejin.cn/post/6930973929452339213 了解哪一种 for
循环
或迭代器适合我们的需求,防止我们犯下一些影响应用性能的低级错误。 JavaScript 是 Web 开发领域的“常青树”。无论是 JavaScript 框架(如 Node.js、React、Angular、Vue 等),还是原生 JavaScript,都拥有非常庞大的粉丝基础。我们来谈谈现代 JavaScript 吧。
循环
一直是大多
行测做的慢,如何提升做题速度?怎么提升正确率?
行测做的慢,如何提升做题速度?怎么提升正确率? 行测学那么多技巧都只为一个目的——快速的做对题目。 正所谓天下武功,唯快不破! 为什么我能从40+提升到80分?(理论上说只要我继续投入时间,应该还能再提升,不过已经上岸了,所以分数就停在80分了。) 我觉得主要因素是我做题速度提升了。 其实我最早行测120题要3个小时,然后全部做完也才40多分。 整个过程中我走了不少弯路,所以为了后来者吸取经验教训,总结一下,我的经验。希望能够有所帮助。 总结起来其实是企业管理PDCA
循环
+计算机深度学习.
2022计算机Java二级考试四十五套题真题【收藏版】(一周裸考计划)
当你看到这篇文章的时候,相信自己已经在考试的路上,或者即将踏入计算机二级考试的道路。先收藏为敬。再网上看了很多的java面试题,有很多都是零零碎碎的,有或者是需要付费加密????的,加个vip什么的,故而以下是博主整理的有关java面试题的以下内容,我想以一种幽默风趣????的风格来给大家分享和探讨。另外附加有一些公司的面试真题(内部分享)下面我就开启????耳机模式。并且⭐是重要部分,要记易考噢。
js中的四种for
循环
总结一下JavaScript 中的 for
循环
写在前面 最近刷题时遇到了几种不同for
循环
,因为没有深入了解导致做题时无法区分它们的用法,尤其是在以及在使用时的注意点。 因此本文主要对js中的四种for
循环
进行总结区分。 文章最后通过一个面试题加深对不同for
循环
的认识和使用。 遍历数组是非常常见的,在这里强调一点: Array 在 Javascript 中是一个对象, Array 的索引是属性名。此处输出的索引值,即 “0″、 “1″、 “2″不是 Number 类型的,而是 String 类型的,因
计算机网络原理大题汇总
文章目录一、计算题二、简答题三、综合题1.计算机网络性能题1题2题32.HTTP连接题13.P2P文件分发题14.TCP拥塞控制题1题25.TCP序号、确认序号题16.IP分片题1题27.IP地址运算题1题2题3【暂时没答案】8.路由算法题1题2题3【暂时没答案】9.CRC编码【
循环
冗余码】题1题210.CSMA/CD计算题111.信号码、传输码、频带传输题112.信道容量题1题2题313.UDP校验和题1 一、计算题 二、简答题 简述混合拓扑结构网络的优缺点。 简述环形拓扑结构网
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章