2015-01-12 5 views
2

내 응용 프로그램에서 사용하는 xaml 파일이 몇 개 있습니다. 각 xaml 파일의 성능을 테스트하는 단위 테스트를 작성하고 싶습니다. 즉, 특정 xaml 파일을 사용하는 창 중 하나를로드/구문 분석하고 렌더링하는 데 얼마나 오래 걸릴지를 테스트합니다.xaml 로딩/파싱 성능을 측정하는 가장 좋은 방법은 무엇입니까

XamlReader 클래스가 정확히 여기에 해당하는 것을 발견했습니다. 그러나, 나는 비슷한 것을 위해 Application.LoadComponent() (System.Windows)도 사용할 수 있다는 것을 알고 있습니다. 전체 xaml 문서를 파싱하는 데 걸리는 시간을 테스트해야한다면 무엇을 사용할 것입니까? XamlReader.Load()/XamlReader.Parse() 또는 Application.LoadComponent() 또는 완전히 다른 것이 있습니까? 이 시나리오에서 가장 좋은 행동 방침은 무엇입니까?

또한 프로그래밍 방식으로 성능 테스트를 할 때 경험이 거의 없기 때문에로드 시간을 측정하는 좋은 방법은 무엇입니까? System.Diagnostics의 스톱워치 클래스가 적절합니까?

+0

당신의 엉망으로 많은 일을. 창을 만들고 테스트하려면 baml (xaml + cs)을 사용하십시오. 'XmlReader'는 대부분의 객체와 배선 이벤트를 만드는 작업의 일부만을 수행합니다. 단위 테스트 성능은 없지만 기존 응용 프로그램에서는 프로파일 러를 사용합니다. 'StopWatch'는 코드의 성능에 결정적인 평화의 반복을 측정하는데 완벽합니다. – Sinatr

+0

코멘트 주셔서 감사합니다. 따라서 xaml 코드에서 얼마나 빨리 xaml 개체가 만들어 지는지 테스트하고 싶다면 XamlReader 클래스와 메서드가 충분해야합니다. – Mefhisto1

+0

[loose xaml] (http://wpf.2000things.com/2010/10/22/102-using-xamlreader-to-load-a-loose-xaml-file/) 및 [baml] (http : /stackoverflow.com/q/634121/1997232) (반대로). 나는 당신이 어떤 성과를 측정하고 있는지 정말로 이해하지 못합니다. xamls가 느리게로드되는 경우 아키텍처 문제가 발생합니다 (창에 인스턴스를 만들 때로드 또는 수행 할 리소스가 너무 많음). – Sinatr

답변

0

시도 System.Diagnostics.Stopwatch. 코드가 실행되기 전에이 스톱워치를 시작하고 완료되면 중지 할 수 있습니다.

당신의 코드는 다음과 같을 것이다 : 당신의 질문에

Stopwatch stopwatch = new Stopwatch(); 
stopwatch.Start(); 
// Your code here!!! 
stopwatch.Stop(); 
Console.WriteLine("This took " + stopwatch.ElapsedMilliseconds + " ms.");