| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1401 人关注过本帖
标题:这两段代码在执行效率上有什么差异啊?
只看楼主 加入收藏
sunmingchun
Rank: 4
来 自:安徽-滁州
等 级:业余侠客
帖 子:198
专家分:277
注 册:2010-4-2
收藏
得分:0 
时间复杂度一样的啊!
2010-11-04 22:27
yxwsbobo
Rank: 5Rank: 5
等 级:职业侠客
帖 子:345
专家分:306
注 册:2007-10-29
收藏
得分:9 
太小了  i 和 j 应该各再加2个0



如果是考题的话,答案应该是2慢,2中的条件判断比1多,影响了速度


实际测试的话应该是2快,访问变量的时候,最好变量之间的地址要近,否则的内存命中非常低,速度更慢 CPU一次读取64K  有可能64K只用了1个字节,剩余的全白读了

How are you 怎么是你?
How old are you   怎么老是你?
2010-11-05 17:25
burellow
Rank: 2
等 级:论坛游民
帖 子:7
专家分:24
注 册:2010-11-6
收藏
得分:0 
回复 8楼 小K鸟
支持
2010-11-06 18:19
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
经12楼一解释感觉茅塞顿开~~~
2010-11-06 19:43
VenusNefu
Rank: 2
等 级:论坛游民
帖 子:14
专家分:11
注 册:2010-11-24
收藏
得分:0 
回复 12楼 yxwsbobo
同意
2010-11-24 15:50
wenxinwukui
Rank: 1
等 级:新手上路
帖 子:22
专家分:6
注 册:2010-11-15
收藏
得分:0 
楼主问的问题假设数组时a[100][5000],即方法(1)是先循环行号,再循环列号
现在在计算机上存储数组大部分是按行优先存储的,也就是说在计算机上是先存完一行在存第二行的,如下:
a[0][0],a[0][1]...a[0][n],a[1][0],a[1][1],...a[1][n],a[2][0],a[2][1]...
这样一来在第(1)种方法中定位更快点,可能是这样定位的:先取第一行的第一个元素a[0][0],接着取第一行的第二个元素a[0][1],直到取完第一行的最后一个元素a[0][n],接着行号加1直接取a[1][0]。因为数组在内存中是连续的空间,所以指针只需要做一个加1运算既可以直接定位,速度快了很多。
而如果按照第(2)种方法先对列号进行循环这样的话第一次访问a[0][0],第二次访问a[1][0]...可以看到,每次指针不仅要做加1操作,而且还要定位指针,这样的话每次都多了寻址时间,所以当数量大时效果肯定远远不如方法(1)。
个人的见解,有错误希望指正。
2010-11-24 21:25
快速回复:这两段代码在执行效率上有什么差异啊?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016573 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved