我该怎么做才能优化以下代码?

Mic*_*ack -5 c

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)

这里