rt,为什么以下两个代码有极大的效率差距?
il int gcd(int a,int b){
int ab=__builtin_ctz(a);
int bb=__builtin_ctz(b);
int tmp,c=min(ab,bb);
b>>=bb;
while(a){
a>>=ab,tmp=a-b;
b=min(a,b),a=abs(tmp);
ab=__builtin_ctz(a);
}
return b<<c;
}
il int gcd(int a,int b){
int ab=__builtin_ctz(a);
int bb=__builtin_ctz(b);
int tmp,c=min(ab,bb);
b>>=bb;
while(a){
a>>=ab,tmp=a-b;
b=min(a,b),a=abs(tmp);
ab=__builtin_ctz(tmp);
}
return b<<c;
}
第一个代码效率远低于第二个代码。