社区
C语言
帖子详情
什么是CPU跨切循环层?
xqlez
2004-09-23 03:15:31
在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。
---------------------------------
CPU跨切循环层是什么意思,CPU是怎么做的?
它究竟是个什么东西呢?
...全文
732
23
打赏
收藏
什么是CPU跨切循环层?
在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。 --------------------------------- CPU跨切循环层是什么意思,CPU是怎么做的? 它究竟是个什么东西呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sn216
2004-09-24
打赏
举报
回复
高手,up
kobefly
2004-09-24
打赏
举报
回复
学到了很多东西
逸学堂
2004-09-24
打赏
举报
回复
1
CPU进行数据处理时候.是先把数据从内存中读到CPU芯片中的cache中去,
而读数据是在cache中+1操作的!也就是说.如果没有跳转语句比如
break,goto等等.cache中保存的数据都是在内存中顺序的数据,当出现跳转
语句时,cache才会到内存的响应地址读取内存的内容,这样就会增加执行代码的
时间消耗.衡量一段代码的效率问题的一个方面也可以用cache命中率!
lynnboy(lynnboy) 说的很有道理!
还有一条就是在循环体中尽量少用判断语句,这样会大大降低循环的执行效率.
尽量把判断放在循环体外部
haha52
2004-09-24
打赏
举报
回复
学习。
athena301
2004-09-24
打赏
举报
回复
保留....
wegotnothingtolosebu
2004-09-24
打赏
举报
回复
学到不少东西。
wyh2002
2004-09-24
打赏
举报
回复
UP,又学到不少东西。
linpidity2004
2004-09-23
打赏
举报
回复
不错
学习 顶下...
nicewinds
2004-09-23
打赏
举报
回复
在优化程序中,主要优化的就是循环,我估计也是一种优化方法把
731DBA
2004-09-23
打赏
举报
回复
mark!
ironfox
2004-09-23
打赏
举报
回复
言之有理!
eaglessky
2004-09-23
打赏
举报
回复
lynnboy(lynnboy) 分析的很好。
lynnboy
2004-09-23
打赏
举报
回复
这个“跨循环层”的概念本身是说,由外层循环进入内层循环是要重新初始化循环计数器的,包括保存外层循环的计数器和加载内层循环计数器,退出内层的时候再恢复外层循环计数器。把长循环放在里面可以显著减小这些操作的数量。
但是另一方面还要注意数据结构本身的效率。
lynnboy
2004-09-23
打赏
举报
回复
你知道CPU指令流水线和指令、数据的Cache命中的概念吗?如果你的“跳读”会跨越cache交换块,甚至page边界的话,就会造成CPU数据cache重新批量装载数据,甚至从虚拟内存中恢复磁盘数据,这当然严重影响效率。
eaglessky
2004-09-23
打赏
举报
回复
????????????????????????????????
? ?
? 有一个问题是:我们知道数组中的数据是先按行再按列存放的。?
? 比如在计算数组和时,如果把列放在内层(仅管是长循环),在扫 ?
? 描元素时,不是连续读取,而是跳读的,会不会又影响了效率呢? ?
? ?
????????????????????????????????
pengweicn
2004-09-23
打赏
举报
回复
主要是出于“流水线”作业以及内存分页管理的关系考虑
bm1408
2004-09-23
打赏
举报
回复
尽量保证顺序的访问数组的每一个元素。由于Windows内存的管理模式,内存是分页管理的。顺序访问数组可以基本保证页面不会来回切换,从而减少了页失效的数量,提高了程序的整体性能。这种性能的提升对于大的数组尤为明显。
pacman2000
2004-09-23
打赏
举报
回复
他忽略了数组是线性存放的事实,用col增长的方式肯定快,cache预先读取的命中高
laomai
2004-09-23
打赏
举报
回复
刚才仔细看了一下,这好象是林锐的XX指南里写,事实上,这个例子不恰当,因为他虽然提高了编译效率,但是降低了运行时的效率。
avalonBBS
2004-09-23
打赏
举报
回复
不晓得, 以前倒是看过CPU用什么流水线什么的.... 听下面的讲^^
加载更多回复(3)
新建文件夹_C++_
在多重
循环
中,如果有可能,要将最长的
循环
放在内
层
,最短的
循环
放在外
层
,以减少
CPU
跨切
循环
层
的次数
循环
体内部存在逻辑判断,并且次数很大的,宜将逻辑判断放在
循环
体外面
C语言for
循环
高手小技巧
/效率低大
层
循环
放在内
层
,小
层
放外面,减少
CPU
跨切
循环
层
的次数。//for大
层
循环
放在内
层
,小
层
放外面,减少
CPU
跨切
循环
层
的次数。//错误2a三维数组太大,超过了栈的空间不能超过2m。//错误1k
大白BC26 open
cpu
开发视频详解
BC26 open
cpu
开发视频详解。对BC26 open
cpu
开发过程中遇到的问题进行详细说明:开发所需要的工具文件、操作流程、代码例程解释、下载编辑流程、程序开发调试等等。还有关于NBIOT行业的常见问题解释。
如何提高
循环
效率
for
循环
的变种:某些编程环境下,为了增强for
循环
的灵活性,使用逗号运算符来允许更多的变量来控制
循环
。 例:for(x=0,y=0;x+y do{}while()
循环
,
循环
体至少被执行一次。 怎样提高
循环
的效率: 1、在多重
循环
中,如果有可能,将
循环
次数最多的
循环
放在最里
层
,
循环
次数少的放在最外
层
,这样能够减少
CPU
跨切
循环
层
的次数。 例如: for(int
杂记之C语言之
循环
语句的效率
一、在多重
循环
中,如果有可能,应当将最长的
循环
放在最内
层
,最短的
循环
放在最外
层
, 以减少
CPU
跨切
循环
层
的次数。例如示例4(b)的效率比 示例 (a)的高。 (a) for (row=0; row { for ( col=0; col { sum = sum + a[row][col]
C语言
69,374
社区成员
243,076
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章