문제

실제로 C#에서 실시간 프로그래밍을하거나 언어 내부를 실제로 이해하는 사람의 응답을 원합니다.

예외는 정상 처리를 처리하는 데 사용되어서는 안되며 오류 조건을 감지하기 위해서만 사용해야합니다. 그 주제에 대한 많은 토론이 있습니다.

나는 단순히 시도/캐치 블록을 제자리에 놓는 데있어 런타임 속도가 느리게 있는지 알고 싶습니다 (프로그램이 어쨌든 끝나지 않는 한 예외는 없음). 시도/캐치 블록은 반복적으로 호출 해야하는 함수 내부에 있습니다. 나는 최소 비용만이 있다고 생각합니다.

CPU주기 또는 기타 작업 (부동 소수점 곱셈과 동일한 비용) 또는 다른 방법으로 비용을 정량화 할 수 있습니까?

Windows XP에서 Microsoft C#.NET 3.5를 사용합니다.

도움이 되었습니까?

해결책

.NET 예외는 던지지 않으면 오버 헤드 비용이 매우 낮습니다. 시도/캐치 블록이 제자리에 있으면 성능이 큰 영향을 미칩니다. 나는 매우 빠르고 단단한 루프에서도 예외 처리에 거의 영향을 미치지 않았다.

그러나 .NET의 예외는 던져 질 때 매우 비쌉니다. 다른 많은 언어보다 던지면 성능에 영향을 미치는 경향이 있습니다. 이것은 예외가 생성 될 때 수집 된 전체 스택 정보 때문입니다.

이것은 예외 취급의 비용이 더 높지만 실제로는 상당히 성능이있는 Python과 같은 다른 언어와 반대되는 행동입니다.

그러나 걱정이된다면 일상 생활을 프로필하고 직접 테스트하는 것이 좋습니다. 이것은 상당히 많은 공연 프로파일 링 후 나의 경험이었습니다. 자신의 코드베이스에서 측정하기위한 대체물은 없습니다.

다른 팁

메트릭과 함께 트라이 시도 캐치의 성능에 대한 좋은 토론.

예외가 발생하지 않을 때 시도/캐치 블록이 성능을 상하게합니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top