Решая домашнее задание по информатике в университете, я всегда нахожу разные способы решения одной и той же проблемы.
Один способ — самый быстрый (время выполнения), но самый длинный и более сложный.
А другой способ легче реализовать, он не хватает времени выполнения, его легко понять и так далее.
В качестве мини-примера мы должны создать программу на 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, потому что всегда есть расхождение между этими двумя способами решения проблем?
Вы должен попробуйте написать читаемый, легко отлаживаемый код для простоты понимания.
Всякий раз, когда вы сталкиваетесь с частями кода, где он может быть сильно оптимизирован, чтобы получить гораздо более высокую производительность (либо путем изменения архитектуры кода или / и путем реализации сборки в вашем коде), вы можете добавить в закомментированный раздел лучшую альтернативу производительности этого , Даже если вы выберете лучшую альтернативу производительности, у вас всегда будет другая, которая может поддержать вас, чтобы понять ее.
Кроме того, придерживайтесь лучших альтернатив производительности, когда вы можете увидеть огромный выигрыш, делая это, а не каждый раз.
Имейте в виду, что эти улучшения лучше только реализовано в случае узкие места производительности или в системах, где энергоэффективность это важно.
Других решений пока нет …