2015-01-12 3 views
2

У меня есть несколько xaml-файлов, которые я использую во всем приложении. Я хочу написать модульные тесты для проверки производительности каждого файла xaml, другими словами, сколько времени потребуется для загрузки/разбора и отображения одного из окон (которые используют определенные файлы xaml).Каков наилучший способ измерения производительности/обработки синтаксиса xaml

Я нашел класс XamlReader, который (я думаю) делает именно это. Тем не менее, я знаю, что Application.LoadComponent() (в System.Windows) также можно использовать для подобных вещей. Если вам нужно было проверить, сколько времени требуется для анализа всего XML-документа, что бы вы использовали? XamlReader.Load()/XamlReader.Parse() или Application.LoadComponent(), или что-то совсем другое? Что было бы лучшим способом в этом сценарии?

Кроме того, поскольку у меня мало опыта в программном тестировании, что является хорошим способом измерения времени загрузки, будет ли класс секундомера из System.Diagnostics подходящим?

+0

Вы испортите много вещей в вашем вопросе. Для создания и тестирования окна вы используете baml (xaml + cs). 'XmlReader' выполняет только часть работы, большинство из которых создает объекты и события проводки. Вы не используете единицу тестовой производительности, но используете профилировщик для существующего приложения. «StopWatch» идеально подходит для измерения многих итераций критически важного кода. – Sinatr

+0

Благодарим вас за комментарий. Итак, если я хочу только проверить, как быстро создаются xaml-объекты из кода xaml, достаточно XamlReader и его методы? – Mefhisto1

+0

См. [Свободный 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."); 

 Смежные вопросы

  • Нет связанных вопросов^_^