| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 866 人关注过本帖
标题:纠结了好久的问题,变量的多少会影响运行效率吗???
取消只看楼主 加入收藏
shansongh
Rank: 1
等 级:新手上路
帖 子:13
专家分:8
注 册:2011-4-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
纠结了好久的问题,变量的多少会影响运行效率吗???
一个函数中,如果有较复杂的运算式,这时,是增加一个中间变量好还是直接用一个变量达成目标好呢??
还有,函数返回时,是将该返回数用一个变量存储好,还是直接将该值用已经有的变量直接用表达式返回好呢??

我个人的想法是,在能够减少变量的情况下尽量用较少的变量。这样减少了cpu和内存之间的交流所产生的延迟,但是cpu的空间毕竟是有限的,
如果是大量的使用这种构成,会不会反而加大了cpu的负担,从而让cpu的运行效率降低呢??

希望大家能够解我心头之惑,拜谢之。。。。。。

现特发两段代码,以作演示

程序代码:
#include <stdio.h>
#include <stdlib.h>


int main()
{
    int sum(int x,int y);
    int mon,day,total;   //定义变量月·日·及总天数
    scanf("%d/%d",&day,&mon);  //2013年的某一天,按日/月格式输入
    total=sum(day,mon)+2;    //由于2013.1.1是星期二,所以加2
    total%=7;
    return 0;
}

int sum(int x,int y)
{
    while(--y)
    {
        if (y==2)  //2月加28天,大月加31天,常月加30天。
        {
            x+=28;
        }
        else if (y==1 || y==3 || 5==y || 7==y || 8==y || 10==y || 12==y)
        {
            x+=31;       //理论上是不需要考虑十二月的,但是为了逻辑的严密性还是加上了。
        }
        else
        {
            x+=30;
        }
    }
    return x;
}

/*另一种写法是:*/

int main()
{
    int sum(int x,int y);
    int mon,day,total,week;   //定义变量月·日·及总天数
    scanf("%d/%d",&day,&mon);  //2013年的某一天,按日/月格式输入
    total=sum(day,mon);    //由于2013.1.1是星期二,所以加2
    total+=2;
    week=total%7;
    printf("%d",week);
    return 0;
}

int sum(int x,int y)
{
    int i,days;
    i=y-1;
    days=x;
    while(i--)
    {
        if (i==2)  //2月加28天,大月加31天,常月加30天。
        {
            days+=28;
        }
        else if (i==1 || i==3 || 5==i || 7==i || 8==i || 10==i || 12==i)
        {
            days+=31;       //理论上是不需要考虑十二月的,但是为了逻辑的严密性还是加上了。
        }
        else
        {
            days+=30;
        }
    }
    return days;
}

这是一个计算2013年某月某日的星期数的小程序,希望各位能不吝赐教,。。
只是想了解一下到底我的意见是否正确。。。。

补充一下,就如TonyDeng所理解的一样,
申请变量是申请内存中的地址,而内存毕竟是cpu外部的设备,读写是要有延迟的。
cpu在计算的时候也是先将数据读入寄存器,在对寄存器里的数据进行运算。那么,如果cpu对数据的运算式需要中间的存储单元存储时,它应该是优先在缓存里申请内存单元吧,而缓存里的读写肯定是内存里读写的至少几十倍吧。。。。


[ 本帖最后由 shansongh 于 2013-4-25 13:08 编辑 ]
搜索更多相关主题的帖子: 表达式 影响 
2013-04-25 02:26
shansongh
Rank: 1
等 级:新手上路
帖 子:13
专家分:8
注 册:2011-4-2
收藏
得分:0 
回复 4楼 TonyDeng
能说的详细点吗。
2013-04-25 10:59
shansongh
Rank: 1
等 级:新手上路
帖 子:13
专家分:8
注 册:2011-4-2
收藏
得分:0 
回复 8楼 peach5460
确实同TonyDeng所说
cpu的运算式在寄存器中进行的
少部分数据在寄存器中不够存放时会不会放在缓存里呢??
如果是这样的话,缓存里的读写必须比在内存里读写要快的多,
这样的话是不是加速了计算的进程了呢??
2013-04-25 12:56
shansongh
Rank: 1
等 级:新手上路
帖 子:13
专家分:8
注 册:2011-4-2
收藏
得分:0 
回复 12楼 wp231957
但是大型的程序就是小代码积累下来的那
如果一条代码延迟几微秒
十万条呢???
更多呢???
2013-04-25 13:10
shansongh
Rank: 1
等 级:新手上路
帖 子:13
专家分:8
注 册:2011-4-2
收藏
得分:0 
回复 14楼 wp231957
只是养成好习惯而已
2013-04-25 15:35
快速回复:纠结了好久的问题,变量的多少会影响运行效率吗???
数据加载中...
 
   



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

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