2013-04-17 2 views
0

그래서 RS-232 직렬 포트를 통해 읽혀지는 문자열을 구문 분석하려고하며 하위 문자열 기능이 원인입니다. 그것은 O (N) 런타임인가? 문자열을 파편으로 쪼개서 파싱 할 수있는 더 빠른 방법이 있습니까?C#에서 하위 문자열의 실행 시간은 얼마입니까?

+4

RS-232를 통해 문자열을 보내는 경우 병목 현상이 'String.Substring()'에있을 수 있다고 생각할 수 없습니다. 어떻게 처리해야합니까? 어쨌든, 그것은 확실히 O (N)입니다. –

답변

3

나는 나의 손목 내가 전체 인용없이 인용 마지막 시간을 때렸다 가지고, 그래서 제대로 이번에 그것을 할 수 있습니다 :

프로그래머에 대해 생각 시간이 엄청난 양의 낭비, 또는, 걱정을 프로그램의 중요하지 않은 부분의 속도와 디버깅 및 유지 관리를 고려할 때 효율성에 대한 이러한 시도는 실제로 부정적인 영향을 미칩니다. 우리는 시간의 약 97 %를 차지하는 작은 효율성을 잊어야합니다 : 조숙 한 최적화가 악의 뿌리 인입니다. 매튜 왓슨이 지적 하듯이 그러나 우리는 내가 매우 의심 Substring 당신이 걱정해야 할 것입니다, 그 중요한 3 %

우리의 기회를 통과하지 않아야합니다.

자, 이것은 당신이 매우 겸손한 대답으로 보일지도 모르지만, 프로그래머가 "반드시 빠르다"라고 항상 코딩해야한다면; 내 생각에 그들의 두뇌는 그들이하는 일에 집중하지 않고있다. 이것은 특정 문제를 해결하는 기능적 코드를 작성하는 것이다.

코드가 으로 눈에 띄게 표시되면 견적에 따르면 성능에 문제가있는 경우 (예 : 인보이스 실행이 20 개 pdf에 5 시간 소요) 시간이 많이 걸리는 것을보고 시작하십시오.

관련 문제