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

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

本文关键字:速度 编程 选择 复杂性 什么 简单 可读性 vs 更好      更新时间:2023-10-16

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

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

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

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

每当你遇到代码的一部分,它可以大量优化,以获得更高的性能(无论是通过修改代码的架构或/或通过实现汇编在你的代码),你可以添加一个注释部分,它的性能更好的替代方案。即使你选择了性能更好的选项,为了理解它,你也总会有另一个可以支持你的选项。

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

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