更高的可读性和简单性与更高的共谋和编程速度,选择什么?

时间:2016-09-17 16:06:18

标签: c++ algorithm performance optimization imperative-programming

解决我在大学的信息学课程,我总能找到解决同一问题的不同方法。 一种方法是最快(执行时间)但最长且更复杂。 另一种方式更容易实现,执行时间短,易于理解等等。

作为一个小例子,我们必须用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;
}

我的问题是我应该关注什么?清洁代码,易于实现/部署,更好的可读性或最佳算法,更快的执行和强大的逻辑,或者只是尽可能地混合所有这些2,因为这两种解决问题的方法总是存在差异?< / p>

1 个答案:

答案 0 :(得分:4)

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

每当遇到可以进行大量优化的代码部分以获得更高的性能时(通过修改代码的架构或/和在代码中实现汇编),您可以添加评论部分是更好的性能替代品。即使您选择了更好的性能替代方案,您也可以使用另一个可以备份您的方法,以便了解它。

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

请注意,在性能瓶颈电源效率至关重要的系统中,这些改进最好仅实施