Отслеживание производительности в c # - PullRequest
1 голос
/ 04 мая 2009

Я хотел бы отследить производительность в мобильном приложении c #, чтобы узнать количество времени, необходимое для некоторых длительных методов. Цель состоит в том, чтобы узнать производительность на уровне методов. Эта трассировка будет решена во время выполнения.

Первая идея, которая пришла, состоит в том, чтобы поддерживать глобальную переменную "doWeHaveToTrace", проверять ее каждый раз, когда вызывается потенциальный отслеживаемый метод, и отслеживать ее, если эта переменная имеет значение true. И в этом случае я, вероятно, использовал бы Logger или TraceListener для записи информации трассировки в файл.

Но я думаю, что этот механизм довольно тяжелый, потому что переменная должна проверяться в каждом методе, а вызовы регистратора должны кодироваться.

Я также думал о программировании аспектов (вставьте код трассировки в методы before () и after ()), но я не думаю, что внутри этого проекта можно разрешить программирование аспектов.

Так что мне было интересно, есть ли другие хорошие механизмы, которые могли бы обеспечить такое отслеживание производительности? Можно ли отследить целый метод? И решить остановить или возобновить трассировку во время выполнения?

Надеюсь, я был чист, Спасибо

Ответы [ 3 ]

2 голосов
/ 04 мая 2009

Не совсем точно, что вы пытаетесь отследить, но если вы пытаетесь отслеживать время между долгосрочными методами, возможно, вам лучше подключить .NET Profiling API . Вот учебник по использованию.

Коммерческий профилировщик был бы другим, более простым вариантом.

0 голосов
/ 06 мая 2009

Можете ли вы просто запустить его на настольном компьютере, в среде IDE и выполнять обычные операции, такие как тактирование и / или выборка?

Вы обязательно найдете вещи, которые требуют времени и могут быть ускорены.

0 голосов
/ 04 мая 2009

Прочтите о том, как Условно скомпилировать с помощью Trace and Debug в .NET (при условии, что вы используете .NET). Классы Trace и Debug предоставят вам весь вывод времени выполнения, необходимый для целей разработки. Затем вы можете удалить весь свой код отладки / трассировки (и связанные с ним издержки времени выполнения) в развернутом приложении, просто удалив директивы компилятора TRACE.

OR

Вы можете использовать внешнее профилирующее приложение 1014 * для выполнения своей работы и профилирования памяти. См. Здесь (из StackOverflow.com): Что такое хорошие профилировщики .NET?

Наслаждайтесь

Роберт К. Картейно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...