2010-07-23 5 views
1

나는 병목을 식별하기 위해 EQATEC과 같은 코드 프로파일 러를 사용할뿐만 아니라 코드에 더 많은 단위 테스트를 작성하기 시작했다. 단위 테스트에서 성능을 모니터링하는 올바른 방법이 있는지 궁금합니다.단위 테스트로 성능을 가장 잘 모니터하려면 어떻게해야합니까?

명백히 코드 프로파일 러가 최적화에 가장 적합 할 것이지만, 필자가 가장 찾고있는 것은 필자의 가장 최근 변경 사항이 필자의 성능을 우발적으로 죽이지 않았는지 확인하는 방법입니다 (중복 함수 등을 호출하여) 비록 그것이 어떤 논리도 깨지 않았더라도.

내 첫 번째 생각은 내 방법 (예 : insert 또는 일부 정렬)을 여러 번 실행하여 대개 틱 수를 산출하는 것입니다. 그런 다음 메서드 호출을 반복 할 단위 테스트를 작성한 다음 Assert(elapsedTicks < magicNumberOfTicks)을 작성합니다. 이것은 너무 자의적인 것처럼 보이지만이 상황에서 다른 개발자가 사용한 것이 궁금합니다.

+0

스트레스 테스트 /로드 테스트 소프트웨어를 더 많이 찾고 있다고 생각합니다. –

+1

요점은 내가 이미 내 논리가 깨지지 않았는지 확인하기 위해 단위 테스트를 사용하고 있으며, 내가 말했듯이 내가 부지불식간에 내가 가진 재귀 함수에 두 번의 추가 호출을했다면 (가급적이면 VS에서) 빨리 알고 싶습니다. 어떤 것도 망가 뜨리지는 않지만 400 % 더 느리게 만듭니다. – dlras2

+0

단위 테스트를 사용하여 작업 성능을 측정하는 것이 유용 할 수 있지만 결과는 소금으로 처리해야합니다. 예를 들어 UT에서는 GC 오버 헤드와 같은 항목이 표시되지 않을 수 있습니다. 이것은 네이티브 코드에 더 많이 적용될 수 있지만 CPU 캐시의 효과는 현실을 반영하지 않을 수 있습니다. – seand

답변

1

나는 회귀 테스트와 단위 테스트를 별도로 제안 할 것을 제안합니다. 단위 테스트의 목적은 코드 신뢰도입니다. 그들은 빠르고 간단해야합니다. 실제 성능 테스트를 수행하려면 결과를 가치있게 만들기 위해 충분히 큰 표본 크기가 필요합니다. 단위 테스트에서이 작업을 수행하면 단위 테스트가 너무 오래 걸리고 너무 오래 걸리므로 항상 실행하지 않아도됩니다.

회귀 테스트의 경우 좋은 도구를 사용해야하지만 (아마도 더 나은 도구가 있음을 알고 있지만) 간단한 Excel 매크로로 충분해야합니다. 또한 스프레드 시트에 데이터를 이미 가지고 있다는 보너스가 추가되어 많은 테스트에서 쉽게 런을 비교할 수 있습니다.

하지만 여전히 단위 테스트로 성능 테스트를 원한다면. 어설 션 오류 메시지에 예상 시간과 실제 시간이 포함되어 있다고 가정하면 마법 수 아이디어가 가장 좋은 아이디어 일 수 있습니다.이 예상 시간은 실행 시간이 얼마나 멀리 떨어져 있는지를 빠르게 알려줍니다.

0

Here 당신이 선택한 유용한 도구를 찾을 수 있습니다.

감사합니다.

+0

질문은 .NET 코드에 관한 것입니다. – tster

관련 문제