解决我在大学的信息学课程,我总能找到解决同一问题的不同方法。 一种方法是最快(执行时间)但最长且更复杂。 另一种方式更容易实现,执行时间短,易于理解等等。
作为一个小例子,我们必须用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>
答案 0 :(得分:4)
你应尝试编写可读,易于调试的代码,以便于理解。
每当遇到可以进行大量优化的代码部分以获得更高的性能时(通过修改代码的架构或/和在代码中实现汇编),您可以添加评论部分是更好的性能替代品。即使您选择了更好的性能替代方案,您也可以使用另一个可以备份您的方法,以便了解它。
此外,坚持使用更好的性能替代品,当你可以通过这样做而不是每次都看到巨大的收益。
请注意,在性能瓶颈或电源效率至关重要的系统中,这些改进最好仅实施 。