#.net #visual-studio #performance #visual-studio-2017 #profiling
#.net #visual-studio #Производительность #visual-studio-2017 #профилирование
Вопрос:
При использовании профилировщика производительности Visual Studio 2017 (Professional), (вкл .ЧИСТЫЙ код) единственным вариантом измерения загрузки процессора является «Выборка». Но метод выборки не учитывает, когда управляемый код вызывает неуправляемый код, например, при выполнении запроса к БД. Итак, измеренное время выполнения функции, которая вызывает неуправляемый код, намного меньше, чем должно быть на самом деле.
Я слышал о чем-то под названием «Профилировщик взаимодействия уровней» (TIP), который, я думаю, решил бы эту проблему, но не похоже, что это существует в VS2017.
Как я могу исправить эту проблему и правильно профилировать свой код?
Комментарии:
1. Можем ли мы предположить, что это этот .net? Это веб-приложение?
2. learn.microsoft.com/en-us/visualstudio/profiling/… может ли это помочь ответить на ваш вопрос?
3. istepaniuk — Да, это . ЧИСТЫЙ код. Нет, это не веб-приложение. Просто обычная программа, которая выполняет вызовы БД.
4. Вы уверены, что ваш сценарий — «вызов неуправляемого кода», а не «ожидание сетевого трафика»? Для профилировщика существует большая разница между потоком, который выполняет код, любой код, и потоком, который находится в режиме ожидания, пока не произойдет ввод-вывод. Даже обмен данными с сервером базы данных, запущенным как отдельный процесс на вашем компьютере, приведет к тому, что ваш поток перейдет в спящий режим , пока компонент database engine не передаст результаты.
5. Если использовать аналогию, программа, выполняющая запрос к базе данных, не работает усердно, она сидит у телефона и слушает музыку hold. И профилировщик знает разницу.