欢迎来到天天文库
浏览记录
ID:31026360
大小:68.50 KB
页数:3页
时间:2019-01-05
《实验八cache和程序访问的局部性》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验八cache和程序访问的局部性201411011120高敏一、实验目的通过实际程序的执行结果,了解程序访问的局部性对带有cache的计算机系统性能的影响。二、实验要求在main函数屮定义一个16*16二维整形数组,然后分别调用程序A和程序B对二维数组中的元素进行求和。在代码中增加计时函数,比较程序A和程序B执行时间是否有差异。程序段Adoublesum_array_rows(doublea[16][16]){doublesum=0;for(intr=0;r<16;r++){for(intc=0;c<16
2、;c++){sum+=a[r][c];}}returnsum;}程序Bdoublesum_array_cols(doublea[16][16]){doublesum二0;for(intc=0;c<16;c卄){for(intr=0;r<16;r++){sum+二a[r][c];}}returnsum;}三、实验报告1、给出源程序(文本文件)和执行结果。程序Aintmain(intargc,constchar*argv[]){doublesum;intcount;doubleTotal_time;clock_
3、tstart,finish;doublea[16][16];inti,j;for(i=0;i<16;i++){for(j=0;j<16;j++){}}start=clock();for(count=0;count<1000;counl++)sum=sum_aiTay_rows(a);finish=clock();Total_time=(double)(finish-start)/CLOCKS_PER_SEC;printf("A=%fseconds",Total_time);return0;)运行结果A=
4、8.000788secondsProgramendedwithexitcode:0程序B:intmain(intargc,constchar*argvfl){doublesum;intcount;doubleTotal_time;clock_tstart,finish;doublea[16][16];inti,j;for(i=0;i<16;i++){for(j=0;j<16;j++){afilUM;}}start=clock();for(count=0;count<1000;count++)sum=sum_
5、array_cols(a);finish=clock();Total_time=(double)(finish-start)/CLOCKS_PER_SEC;printf(”A=%fseconds'n”,Total_time);return0;}运行结果A=8.000790secondsProgramendedwithexitcode:0执行时间有差异,计算二维数组和时,先算行的计算时间比先算列的时间更短。2、对实验结果进行分析,说明局部数据块大小、数组访问顺序等和执行时间之间的关系。在局部数据块大小相同情况
6、下,数组访问顺序按照行优先访问的顺序,执行吋间更短。因为计算机内存是一维的,多维数组的元索应排成线性序列后存人存储器。数组一般不做插入和删除操作,即结构中元素个数和元素间关系不变化。一般采用顺序存储方法表示数组。C语言中,数组按行优先顺序存储。即将数组元素按行向量排列,第i+1个行向量紧接在第i个行向量后面。二维数组Amn的按行优先存储的线性序列为:al1,al2,aIn,a21,a22,…,a2n,,ami,am2,…,amn
此文档下载收益归作者所有