Я работаю над алгоритмом и хочу, чтобы мой код стал более эффективным. В моем коде используются простые арифметические и сопоставления. Однако я хочу заменить операторы if, поскольку они могут занять много времени. код будет работать более миллиона раз, так что даже малейшее улучшение appreciated.please ответ! вот код-альтернатива оператору if в C++
int_1024 sqcalc(int_1024 s,int_1024 f){
f=f*20;
s=s-81;
s=s-(f*9);
if(s>=0){
return 9;
}
s=s+f;
s=s+17;
if(s>=0){
return 8;
}
s=s+f;
s=s+15;
if(s>=0){
return 7;
}
s=s+f;
s=s+13;
if(s>=0){
return 6;
}
s=s+f;
s=s+11;
if(s>=0){
return 5;
}
s=s+f;
s=s+9;
if(s>=0){
return 4;
}
s=s+f;
s=s+7;
if(s>=0){
return 3;
}
s=s+f;
s=s+5;
if(s>=0){
return 2;
}
s=s+f;
s=s+3;
if(s>=0){
return 1;
}
s=s+f;
s=s+1;
if(s>=0){
return 0;
}
}
я хотел бы заменить, если чеки, так как я думаю, «» они делают алгоритм медленно. любые предложения? int_1024 - это переменная ttmath с 1000 бит, поэтому сохранение на ней может быть хорошим вариантом? Деление или умножение для такого большого числа может быть медленным, поэтому я попытался использовать дополнение, но безрезультатно.
Mother of ifs: O – mfontanini
Используйте углубление, чтобы сделать его более понятным, все выглядит как обман. – DumbCoder
Что делает эта функция? Профилировали ли вы это, чтобы подтвердить, что утверждения if являются проблемой? –