int FindingMoves(int input1) {
int result = 0;
int input2 = input1 + 1;
result = (2 * input2 + 1) * (2 * input2 + 1);
return result;
}
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能优化上述C程序,这必须被认为是有效的?
我应该使用另一种编程语言来获得更好的结果吗?Java8,C++?
小智 6
优化代码的一种方法是让编译器为您完成工作.
考虑相同功能的不同版本:
int Finding_Moves(int input)
{
++input;
input *= 2;
++input;
return input * input;
}
int Finding__Moves(int input1)
{
int input2 = 2*(input1 + 1) + 1;
return input2*input2;
}
int FindingMoves(int input1)
{
int result = 0;
int input2 = input1 + 1;
result = (2*input2 + 1)*(2*input2 + 1);
return result;
}
Run Code Online (Sandbox Code Playgroud)
在所有情况下,生成的程序集都是相同的:
lea eax, [rdi+3+rdi]
imul eax, eax
ret
Run Code Online (Sandbox Code Playgroud)