for循环执行效率
来源:互联网 发布:python的ddt怎么用 编辑:程序博客网 时间:2024/05/29 12:16
1.情况1
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <time.h>#define A 10000#define B 10#define num 100000void main(){double a[A][B];double b=0;int t1=clock();for (int n=0;n<num;n++){for (int i=0;i<A;i++){for (int j=0;j<B;j++){b=1;}}}int t2=clock();for (int m=0;m<num;m++){for (int ii=0;ii<B;ii++){for (int jj=0;jj<A;jj++){b=1;}}}int t3=clock();printf("%d %d \n",t2-t1,t3-t2);}
第一种情况是内外层循环次数相差比较大,这种情况次数少的应该放外循环,循环次数多的应该放内循环。这是因为如果外循环比较大,则内存地址跳跃性比较大,cache命中率比较低,所以会慢点,不过也不是绝对的,可是概率上可能会慢。
2.情况2
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <time.h>#define A 10000#define B 10#define num 10000void main(){double a[A][B];double b=0;int t1=clock();for (int n=0;n<num;n++){for (int i=0;i<A;i++){for (int j=0;j<B;j++){a[i][j]=1;}}}int t2=clock();for (int m=0;m<num;m++){for (int ii=0;ii<B;ii++){for (int jj=0;jj<A;jj++){a[jj][ii]=1;}}}int t3=clock();printf("%d %d \n",t2-t1,t3-t2);}
第二种情况影响循环效率的主要是访问数组的速度,由于二维数组在内存中是先存放行,然后再存放列。所以在访问数组时,如果先访问行再访问列,则访问地址是连续的,会比较快。但是如果先访问列再访问行,则每次访问数组中元素时,地址跳跃都比较大,cache命中率比较低,在物理内存不足情况下将会分布存储数据,这样每访问一次数组会在不会页面中跳转,内存页面调度和页面交换次数往往会增加,这会大大降低访问速度。
- for循环执行效率
- 关于for循环的执行效率问题
- 关于for循环的执行效率问题
- 关于for循环的执行效率的问题
- js indexOf()和for循环的执行效率那个更高
- 关于执行两个for循环效率注意点
- for循环 时间效率
- for 循环 效率
- for循环效率
- for循环效率对比
- for循环效率
- 优化for循环效率
- For循环效率
- for循环效率问题
- 关于循环执行效率问题
- for循环嵌套的效率
- for循环效率问题整理
- 一个for循环的效率
- plist Bundle
- xcode 4.6.3 用cocos2d-iphone+box2d模拟器设置竖屏问题
- 内核链表---Linux TCP/IP协议源码分析
- ASP.NET弹出新窗口的方法【显示提示信息】
- robotium 方法学习实例
- for循环执行效率
- 关于位操作的详细说明
- UIActivityIndicatorView使用简单介绍(风火轮)
- 图形学实验1-绘制人脸
- linux下安装apache步骤
- u盘量产
- 《TCP/IP 卷一》笔记、ping和traceroute 的实现思路
- STL中array<>内部为什么不能交换指针呢
- Study WPF ----- 1