新手请教,语句的效率问题!
一直想问问,像下面的代码,怎样写更快: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谁快?