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; 
} 

제 질문은 무엇에 집중해야합니까? 구현하기 쉽고 배포하기 쉽고 가독성이나 알고리즘이 우수하고 실행 속도가 빠르며 논리가 튼튼하거나 문제를 해결하는 두 가지 방법이 서로 다르기 때문에 가능한 한 최선을 다해 시도하십시오.

+1

나는 더 나은 속도를 위해 단 한 cout으로 해결책 2를 갈 것이다.) for (int i = 1; i <=; i = i + 2) {cout << "* *"; }'BTW 저는 예제 2에서 오타가 있다고 생각합니다 : 두 루프 모두 스타와 스페이스를 같은 순서로 발행합니다. –

+0

좋은 알림;) 공간이 예로서 공간 대신에 "-"라고 가정 해 보겠습니다. – DomainFlag

+1

두 번째 버전에는 2 개의 루프가있는 이유가 표시되지 않습니다. 왜 결국에는 조건부를 넣지 않을까요? – perreal

답변

4

당신은 이해의 편의를 위해 디버그 코드를 쉽게 읽을 작성하려고합니다.

코드의 아키텍처를 수정하거나 코드에서 어셈블리를 구현하여 훨씬 더 높은 성능을 얻기 위해 많이 최적화 될 수있는 코드 부분을 만날 때마다 주석 처리 된 섹션에 더 나은 성능을 추가 할 수 있습니다 그것의 성능 대안. 더 나은 성능 대안을 선택하더라도 항상 이해할 수 있도록 백업 할 수있는 다른 옵션이 있습니다.

또한 매번이 아니라 거대한 이득을 볼 때 더 나은 성능 대안을 고수하십시오.

은 이러한 개선은이 나 시스템에 전력 효율이 중요한 경우 병목 성능의 경우을 구현 될 더 나은 있음을 알아 두셔야합니다.

+1

성능상의 문제가 발생했을 때 그리고 _ 발생했을 때. – greybeard

+0

나는 당신이 제안한 것에 기초하여 편집을했다. 고맙습니다 :) –