2012-10-24 2 views
5

이것은 내가 직면 한 시나리오입니다. 일부 작업을 프로파일 링하기 위해 MiniProfiler를 사용하고 있습니다. 그러나 그것은 내가 사용해야 할 특별한 기능이 결여되어있다. 프로파일 링을 위해 고려해야 할 사항과 느린 것, 생각하지 않는 것 등을 고려한 설정 파일 MiniProfiler가 있습니다. 그러나이 설정은 전역 설정이며 프로파일 링중인 모든 작업에 적용됩니다. 내가 필요하면이 같은 것을 말할 수있을 것입니다 :mvc 미니 프로파일 러를 사용하여 작업 당 임계 값 타이밍

이 인수 '(1200)'이 작업이 1200 밀리 걸릴 것으로 예상되며, 그 이하 아무것도 걸리는 경우 데이터베이스에 그것의 결과를 저장하지 않는 것을 의미
using (mvcminiprofiler.Step("OperationName", 1200) 
{ 
    //some C# code 
} 

또는 1200 ms와 동일합니다. 그러나 1200ms 이상 걸리면이 응답 시간을 데이터베이스에 저장하십시오. 그래서 기본적으로 작업 당 임계 값에 대해 이야기하고 있습니다.

MiniProfiler에 대한 래퍼를 작성하고 싶지만 미니 프로파일 러 소스 코드를 변경할 의향이 없습니다. 실제로 우리는 이미 미니 프로파일 러 주변에 약간의 프레임 워크를 구축했지만 소스 코드를 변경하고 싶지는 않습니다. 그러나 단순히 기능을 확장하는 데는 몇 가지 방법이 있습니다.

+0

이것은 까다 롭습니다. IStorage에이 정보를 어떤 식 으로든 흘려 보내야합니다. Jarrod에게 모양을달라고 요청할 것입니다. –

+0

해주세요 :) 우리가 프로필을 만들고 싶지 않고 사이트에 영향을 미치지 않기 때문에 의미가 있습니다. 실시간에는 상당한 시간이 소요될 수 있습니다. 따라서 전역 임계 값과는 별도로 작동 레벨 임계 값 타이밍을 갖는 것이 좋습니다. 감사! –

+0

'.Step()'에 대한 오버라이드 대신'.StepIf ("Operation", 1200)의 경우는 어떨까요? –

답변

2

난 그냥 nuget 3.0.10-beta5에서 사용할 수 MiniProfiler에 다음과 같은 새로운 확장 메서드를 추가하고 이상 :

  1. MiniProfiler.StepIf(string name decimal minSaveMs, bool includeChildren = false)
  2. MiniProfiler.CustomTimingIf(string category, string commandString, deciml minSaveMs, string executeType = null)

당신은 정확히을 할 이들을 사용할 수 있어야합니다 당신이 찾고있는 것. 귀하의 경우에는, 당신은 다음과 같은 코드를 사용합니다 :

using (MiniProfiler.Current.StepIf("Operation Name", 1200)) { 
    // do your stuff 
} 

CustomTiming을 저장할지 여부를 결정할 때 아이 프로파일에 기록 된 시간을 사용할지 여부를 설정 (디폴트는 false)을 includeChildren을 사용할 수 있습니다 .

자세한 내용은 this GitHub Issue.

관련 문제