cpu 缓存和程序的运行速度-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 301099
  • 博文数量: 33
  • 博客积分: 132
  • 博客等级: 入伍新兵
  • 技术积分: 1002
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-16 22:24
个人简介

学习计算机科学与技术专业,喜欢计算机,喜欢linux,喜欢编程

文章存档

2014年(7)

2013年(12)

2012年(14)

分类:

2012-11-15 17:47:55

原文地址: 作者:我在乎的你

cpu缓存和程序运行速度

前几天汇编老师给我们这样两段代码让我们去测试运行速度

/* 程序1 */

static volatile int array[4096][4096];

int main()

{

    int x, y;

    for(y = 0; y != 4096; y )

        for(x = 0; x != 4096; x )

            array[x][y] = 0;

    return array[x - 1][y - 1];

}

/* 程序2 */

static volatile int array[4096][4096];

int main()

{

    int x, y;

    for(x = 0; x != 4096; x )

        for(y = 0; y != 4096; y )

            array[x][y] = 0;

    return array[x - 1][y - 1];

}

 

这两个程序的内层循环次数完全一样,而且都是相同的赋值语句。原本自己估计两个程序运行时间应该大致相同,程序2由于是对连续内存区进行访问,在经过编译器优化后可能速度略有提升。但实际测了一下,发下在gcc -o0和gcc -o3下程序2都比程序1节省了大约8倍时间?!

后来查了一下才知道,原来cpu在操作内存时会优先在cpu缓存中进行。程序2由于是对连续的内存进行操作,所以更新缓存的次数少;而程序1需要不停地更新缓存中的内容,所以花费了大量时间。

看来以后写程序还是要注意,太过于依赖-o3还是不行,有些细节还是要自己把握。

 

阅读(1357) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图