2016-06-16 1 views
1

선생님은 프로그래밍 할 때 동일한 코드 부분을 두 번 이상 쓰지 말라고 항상 말씀하셨습니다. 그러나 우선 순위 코드가 강력해야합니다 & 빠른 클래스와 메소드를 사용하는 대신 동일한 코드를 적어보세요! 클래스를 호출하는 것이 직접 코드보다 시간이 조금 더 걸립니까?! 예를 들어 공용 클래스 및 메서드로 코드 속도가 느려 집니까?

내가하고 싶은 경우

그 :

Program1.Action1(); 
Program1.Action2(); 
Program1.Action3(); 
& 
Program2.Action1(); 

등 등 등

와 나는 행동을 (호출 할 수 있습니다, 이러한 작업이 수 가능한 가장 빠른 수행 할) 또는 아래로 쓰기 전체 코드?!

다른 질문에 대한 그의 질문지도 : 프로젝트의 경우 교사가 쉽게 읽을 수 있도록해야하므로 Visual Studio에서 "클래스 탭"이 많아 모든 것을 공개하고 우리는 클래스라고 부릅니다. 또는 우리의 mainform에있는 방법.

좋아요, 아주 쉽게 읽을 수 있지만 코드가 느려지지는 않습니다. 공개 "클래스 탭"이 mainform의 개인 클래스보다 느립니다! 아무데도 아무 것도 발견하지 못했습니다. 고마워요.

+0

성능 차이를 감지 할 수 없습니다. 컴파일러는 ** 인라이닝 (** inlining) **이라는 최적화 기술에서 이것을 수행 할 수도 있습니다. [here] (http://www.dotnetperls.com/inline-optimization)를 참조하십시오. – Maarten

+1

크 누스 (Knuth)는 "프로그래머는 프로그램의 중요하지 않은 부분의 속도를 생각하거나 걱정하는 데 막대한 시간을 낭비한다. 디버깅과 유지 관리를 고려할 때 효율성에 대한 이러한 시도는 실제로 부정적인 영향을 미친다. 작은 효율성에 대해서는 약 97 %의 시간이 필요합니다. 조숙 한 최적화는 모든 악의 뿌리입니다. 그러나 중요한 3 %에서 기회를 포기해서는 안됩니다. " – TerraPass

+0

* 생산적 일 수있는 방법은 "이 코드가 가능한 가장 빠를 수 있습니까?"라고 계속해서 묻지 않는 것입니다. 그러나 "이 코드는 빠르지 * 충분한가?" 그러나 그 질문에 대답하는 유일한 방법은 명확한 * 목표 *를 설정 한 다음 * 측정 *하는 것입니다. –

답변

1

주요 질문과 우려 사항이 있습니다.

별도로 말씀 드리겠습니다. 첫째, 공공 및 사적 자체는 그 자체로 더 빠르거나 느리지 않습니다. 컴파일러 은 개인적인 방법이 관련 될 때 더 많은 것을 이론적으로 최적화 할 수 있지만 차이를 만들 수있는 경우는 많지 않다고 생각합니다. 따라서 짧은 대답은 아니요, 대중은 코드의 속도를 늦추지 않습니다.

단순한 함수 호출은 무시할 수있는 비용입니다. 백만 번 이상 반복되는 코드를 반복적으로 프로그래밍하지 않는다면 일부 함수 호출의 비용은 걱정할 필요가 없습니다.

성능상의 문제가 없다면 걱정할 필요가 없습니다. 학습하면서 자신에게 호의를 베풀고 10 번이나 적어보십시오. 성능 문제가 없다면 신경 쓰지 말아야합니다.

코드 가독성과 알고리즘 복잡성에 대해 집중해야하며 "성능"을 향상시킬 수도 있고 개선하지 않을 수도없는 미세 최적화가 아니라 코드를 쉽게 복잡하게 만들고 버그를 생성 할 수 있습니다.

읽기 쉽고 테스트 할 때이 가장 중요합니다. (대담합니까?) 98 %의 소프트웨어가 개발되었습니다.

+0

내 프로그램의 첫 번째 목표는 확실히 속도이며, 나는 몇 가지 MS를 얻고 싶습니다. 2 개 또는 3 개가 완벽 할 것입니다. 그래서 예, 성능 문제가 있으므로 걱정해야합니다! 당신이 당신의 요지를 아주 분명하게 한 후에, 나는 그들에게 문제가 없다면 나는 결코 성과에 관심을 가지지 않을 것이라고 약속한다! 어쨌든 당신의 반응에 감사드립니다 !! – jsls

+0

메서드가 엄격한 루프에서 호출합니까? 가능한 최상의 알고리즘을 사용하고 있습니까? 코드를 프로파일 링 했습니까? 프로파일 링없이 성능 최적화는 어둠 속에서 함정을 쏘는 것과 같습니다. –

+0

오늘 valgrind를 시험해 보겠습니다. 실제로 성능 최적화를 알지 못했습니다 ... 큰 도움이 될 것입니다. 감사합니다! (정확히 내가 필요로하는 것입니다!) – jsls

4

언제든지 프로파일 링을 수행 할 수 있습니다.

하지만 실제로 코드를 컴파일 할 때 C#이 그러한 선택을 할 때 당신보다 낫다고 믿어야합니다.

귀하의 질문에 진술 한 것들이 불필요한 마이크로 최적화와 같아서 차이점을 만들지 않을 것입니다.

가독성과 프로그램 확장 능력은 더 중요한 고려 사항입니다. 컴퓨터는 매년 속도가 두 배로 빨라지지만 프로그래머는 점점 더 비싸게되고 있습니다.

+0

모든 ms가 나를 위해 큰 승리를합니다. 차이의 모든 작은 스크랩이 나를 위해 좋습니다 :) 그리고 네가 확실하게 나는 꽤 잘 컴파일 된 작품을 이해하지 못한다. – jsls

관련 문제