0

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

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

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

4

1 回答 1

4

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

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

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

请记住,这些改进最好仅在性能瓶颈的情况下或在电源效率至关重要的系统中实施。

于 2016-09-17T16:25:51.220 回答