Профилировщик Visual Studio 2010 с SQL - PullRequest
4 голосов
/ 24 мая 2011

Я использую встроенный в Visual Studio 2010 профилировщик для просмотра раздела с неэффективным кодом. Тем не менее, я вижу некоторые результаты, которые не совсем имеют смысл. Вот снимок отчета:

report screenshot

Это, кажется, указывает на то, что Regex.Replace является узким местом (и поэтому я должен постараться максимально сократить или исключить это использование). Тем не менее, это кажется неточным, так как я знаю, что этот конкретный раздел кода интенсивно использует базу данных, и, таким образом, я ожидаю, что SqlCommand.ExecuteNonQuery будет хотя бы немного выше в этом отчете, если не более доминирующим, чем Regex использовать.

Итак, мой вопрос: является ли этот инструмент профилировщика бесполезным для чего-либо, связанного с доступом к базе данных, поскольку работа над SQL выполняется другим процессом (например, сервером SQL), и поэтому я должен измерить его каким-то другим способом?

Ответы [ 4 ]

3 голосов
/ 24 мая 2011

Профилировщик Visual Studio имеет два режима работы: сэмплирование и инструментирование.В режиме выборки он не рисует выборки, когда он заблокирован, как для ввода / вывода.Из-за этого он не может показать вам какую-либо часть дерева вызовов, кроме той, в которой листья выполняют необработанную обработку ЦП.

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

И что бы вы ни делали, пожалуйста, игнорируйте исключительное время.Обратите внимание только на инклюзивное время, как процент от общего времени.Вы ищете подпрограммы в вашем коде , которые активны большую часть времени, большая часть которых потрачена на вызов других подпрограмм, и вы ищете вызовы, без которых можно обойтись.

PS Я делаю это , которое всегда работает.

2 голосов
/ 24 мая 2011

По моему мнению, вы правильно относитесь к профилировщику Visual Studio в отношении работы SQL.

Чтобы проверить работу SQL, лучшим вариантом будет запуск SQL Profiler и отслеживание запросов.Вы можете настроить профилировщик SQL, чтобы показать планы выполнения всех входящих запросов (... для соответствующей базы данных) из вашего приложения.Это будет указывать, является ли это вашей работой SQL или, как снимок экрана предлагает Regex.Replace.

Hasanain

1 голос
/ 16 августа 2011

Может также оказаться полезным параметр «Профилирование взаимодействия уровней» для исследования проблем SQL с помощью профилировщика Visual Studio 2010. Вы можете включить эту опцию на странице 3 мастера производительности или как часть свойств сеанса (см. наш блог для скриншотов).

После того, как вы собрали данные в этом режиме, переключитесь в представление «Уровни взаимодействий», и вы увидите подробную информацию о вызовах SQL, включая количество вызовов и истекшее время (изображение из блога профилировщика) Tier Interaction View

1 голос
/ 25 мая 2011

Visual Studio Profiler - это CPU Profiler.Профилировщики ЦП полезны для анализа связанных с ЦП программ или связанных с ЦП частей программ, связанных с вводом-выводом.Вот введение в эти термины:

Сваш процесс связан с вводом / выводом, профилировщик процессора не поможет вам ускорить работу вашей программы.Как вы и подозревали, вам придется профилировать запрос SQL с помощью других инструментов, таких как:

или одного из многихдругие инструменты.

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