2010-01-22 2 views
2

테스트 및 프로덕션에서 실행중인 일부 서비스에 대해 프로파일 링 코드를 실행하고 싶습니다. 나의 계획은 내가 알고 있어야 어떤 잠재적 인 함정이있다, 너무 멀리 가기 전에PostSharp는 프로덕션 환경에서 실행되는 코드를 프로파일 링하는 좋은 방법입니까?

public class TimerAttribute : OnMethodBoundaryAspect 
    { 
     //some data members 
     //... 

     public override void OnEntry(MethodExecutionEventArgs eventArgs) 
     { 
      //write method entry time to file 
     } 

     public override void OnExit(MethodExecutionEventArgs eventArgs) 
     { 
      //write method exit time to file 
     } 
    } 

처럼 보이는 클래스를 구현하는 PostSharp를 사용하는 것입니다? 이러한 메소드를 널리 사용 (즉, assemblyinfo에 라인을 추가하기 만하면)하면 타이밍 데이터의 유효성 측면에서 심각한 성능 문제가 발생합니까?

답변

2

성능 계측을 위해서는 aspect의 오버 헤드를 알고 있어야합니다. 이 오버 헤드는 이전 버전의 PostSharp에서는 중요했지만 PostSharp 2.0에서는 크게 향상되었습니다.

코드에 관해서는 파일에 쓰는 것이 느리고 스레드가 안전하지 않을 수 있다는 위험이 있음을 알았습니다. 물론 당신의 상황과 목표에 달려 있습니다.

성능 카운터가 좋은 대안 일 수 있습니다.