更好的可读性和简单性与更高的复杂性和编程速度,该选择什么?

Better readability and simplicity versus higher complicity and speed in programming, what to chose?

我在大学做信息学的作业时,总是想出不同的方法来解决同样的问题。 一种方法是最快的(执行时间)但最长且更复杂。 另一个更容易实现,执行时间短,容易理解等。

作为一个小例子,我们必须在 C++ 中创建一个程序,它输出一行 N 个元素,其中每个元素具有相同的相邻元素,但中间的元素不同。

Ex.    
6 Elements: *_*_*_
7 Elements: *_*_*_*

第一个解决方案最简单:

#include <iostream>
using namespace std;

int main(void){
    int a;
    cin >> a;
    for (int i=1; i<=a; i++)
    {
        if (i%2 != 0)
        {
            cout << "*";
        }
        else
        {
            cout << " ";
        }
    }
    return 0;
}

第二个实现起来有点困难但执行起来更快(更少的条件检查):

#include <iostream>
using namespace std;

int main(void){
    int a;
    cin >> a;
    if (a%2 == 1)
    {
        for (int i=1; i<=a; i=i+2)
        {
            cout << "*";
            cout << " ";
        }
    }
    else
    {
        for (int i=1; i<a; i=i+2)
        {
            cout << "*";
            cout << " ";
        }
        cout << " ";
    }
    return 0;
}

我的问题是我应该关注什么?干净的代码,易于 implement/deploy 和更好的可读性或最好的算法,更快的执行和强大的逻辑,或者尽可能地尝试混合所有这些 2,因为这两种解决问题的方法之间总是存在差异?

应该 尝试编写可读、易于调试的代码以便于理解。

每当您遇到可以对其进行大量优化以获得更高性能的部分代码(通过在代码中实现汇编来修改代码的体系结构 or/and)时,您可以添加注释部分它的更好的性能选择。即使您选择了性能更好的替代方案,您总会有另一个可以支持您的方案,以便您理解它。

此外,当您通过这样做可以看到巨大的收益时,请坚持使用性能更好的替代方案,而不是每次都这样做。

请记住,这些改进最好仅在出现性能瓶颈或[=19]的系统中实施 =]电源效率 至关重要。