| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 980 人关注过本帖
标题:新手请教,语句的效率问题!
取消只看楼主 加入收藏
ssikkiss
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-6-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
新手请教,语句的效率问题!
一直想问问,像下面的代码,怎样写更快:

1.在写循环的时候,
a写法:
        for(int i=0;i<text.length();i++){}
b写法:
        int len=text.length();
        for(int i=0;i<len;i++){}
请问a和b谁快?是一样吗?关键有时候text.length()会换成其他函数,比如一个执行的很慢的函数,是否每次比较的时候都会运算一次呢?

2.在写循环的时候,
a写法:
    while(i>0){
        ......
        int k=2;
        ......
    }
b写法:
    int k=2;
    while(i>0){
        ......
        ......
    }
请问a和b谁快?对a,是不是循环体里每次循环,都要创建一个变量k,又删除这个变量,而比较慢?

3。对整数乘2的运算:
a写法:    k<<=1;
b写法:    k+=k;
c写法:    k*=2;
请问a,b,c哪种快?其速度与k的值有没有关系?

4.对相减求模的运算,(模p,p,x,y都是正整数)
a写法:
        x-=y;
        x+=p;
        x%=p;
b写法:
        x-=y;
        if(x<0){
            x+=p;
        }else if(x>0){
            x-=p;
        }
请问a和b谁快?



搜索更多相关主题的帖子: 效率 语句 
2010-06-13 21:06
ssikkiss
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-6-13
收藏
得分:0 
第4问是这样的:
就是我自定义了一个类型,名叫mod_int,
1:mod_int型的数总是正数
2:mod_int型的数小于一个素数p;
3:mod_int其实就是整数模p构成的有限域;

上面的第4问就是对这中mod_int型的数做减法;
请问应该用哪种方法写?
2010-06-14 23:33
ssikkiss
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-6-13
收藏
得分:0 
对第1问我还有点疑问:
假设这样:
for(int i=0;i<k;i++){
    k=....
}
或者这样:
int calc(){
    return k+2;
 }
for(int i=0;i<calc();i++){
    k=....
}

如果编译器保存了k的值的话,后面对k的修改就无效了吗?



2010-06-14 23:41
快速回复:新手请教,语句的效率问题!
数据加载中...
 
   



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

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