V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
xiaoxiaoyang
V2EX  ›  Linux

想请教一个关于 c 访问内存的问题?

  •  
  •   xiaoxiaoyang · 2015-11-03 21:04:45 +08:00 · 2554 次点击
    这是一个创建于 3343 天前的主题,其中的信息可能已经有所发展或是发生改变。
    c 程序
    int a=4;
    int i,j;
    for (i=0;i<32;i++)
    {
    j=1<<i;
    if( ( a & j ) ==j)
    {
    break;
    }
    }


    当跳出循环时,怎样判断 for 循环里访问内存的次数
    10 条回复    2015-11-03 22:13:07 +08:00
    aheadlead
        1
    aheadlead  
       2015-11-03 21:09:13 +08:00
    要考虑 cache 的吗?
    wsy2220
        2
    wsy2220  
       2015-11-03 21:16:22 +08:00
    很可能一次都不需要,因为这几个变量寄存器就能放下。得看编译以后的汇编代码.
    xiaoxiaoyang
        3
    xiaoxiaoyang  
    OP
       2015-11-03 21:18:22 +08:00
    @aheadlead
    那如果把 cpu+cache 算一个整体的话,访问内存次数?
    kkhaike
        4
    kkhaike  
       2015-11-03 21:19:48 +08:00
    你要说不考虑任何优化
    xiaoxiaoyang
        5
    xiaoxiaoyang  
    OP
       2015-11-03 21:21:48 +08:00
    @wsy2220
    如果程序大的话呢,看访问几次是不是只能看汇编代码呢?
    或者只有特定汇编指令才会去访问内存呢?求指点
    xiaoxiaoyang
        6
    xiaoxiaoyang  
    OP
       2015-11-03 21:24:40 +08:00
    @kkhaike
    如果不优化,有没有方法可以确定呢?
    wsy2220
        7
    wsy2220  
       2015-11-03 21:29:07 +08:00
    @xiaoxiaoyang 要确定实际访问了几次只能看汇编...
    kkhaike
        8
    kkhaike  
       2015-11-03 21:32:10 +08:00
    你问的问题和回答都很奇怪。。
    第一个回答。难道不是一个整体?
    第二个回答。意义在哪里?
    第三个回答。就算不优化也只是理论上的推测,但看你的问题完全就是想“测定”这个东西。
    你到低腰干啥?
    xiaoxiaoyang
        9
    xiaoxiaoyang  
    OP
       2015-11-03 21:38:44 +08:00
    @kkhaike
    就是想尝试看看,如果程序很大的话,那个 for 循环里的代码访问内存的次数。
    Cu635
        10
    Cu635  
       2015-11-03 22:13:07 +08:00
    lz ,你这是在写作业么?

    这个问题一般是 benchmark 时候分析性能针对性的优化时候需要的,这个场景下是要考虑寄存器和缓存的,访存就是指访问主内存。做性能分析解决性能瓶颈。

    如果说这是在学习计算机组成原理或者 C 语言的时候的作业,你得去问问老师到底是在什么前提下考虑问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1149 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:25 · PVG 02:25 · LAX 10:25 · JFK 13:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.