更好的可读性和简单性vs更高的复杂性和编程速度,选择什么
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;
}
我的问题是我应该关注什么?干净的代码,易于实现/部署,更好的可读性或最好的算法,更快的执行速度和强大的逻辑,或者只是尽可能地将这两者混合在一起,因为这两种解决问题的方法之间总是存在差异?
您应该尝试编写易读,易于调试的代码,以方便理解。
每当你遇到代码的一部分,它可以大量优化,以获得更高的性能(无论是通过修改代码的架构或/或通过实现汇编在你的代码),你可以添加一个注释部分,它的性能更好的替代方案。即使你选择了性能更好的选项,为了理解它,你也总会有另一个可以支持你的选项。
另外,当您可以看到巨大的收益时,坚持使用性能更好的替代方案,而不是每次都这样做。
请记住,这些改进最好只在性能瓶颈的情况下或在电源效率至关重要的系统中实现。
相关文章:
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 为什么在读取文件大小时文件IO速度会发生变化
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- 文件系统:复制功能的速度秘诀是什么
- 模板元编程:如何将参数包组合成新的参数包
- Qt Q串行端口未编程设备未关闭
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 模板元编程 - 尝试实现维度分析
- 我是编程新手
- 在C++中使用并行化的预期速度是多少(不是 OpenMp,而是 <thread>)
- C++编程从外部文本文件定义数组大小
- 检索磁盘读/写最大速度(以编程方式)
- 互联网连接速度与HTTP请求的编程语言速度
- 需要建议,以提高单词中断速度(动态编程)
- 竞争性编程:解决方案运行速度太慢
- 由于LAPACK的原因,使用OpenMP编程速度较慢
- OpenGL可编程管道运行速度较慢
- 与旧编译器相比,新编译器的共享内存编程速度较慢
- 更好的可读性和简单性vs更高的复杂性和编程速度,选择什么