При профилировании в режиме сборки выпуска действительно ли сгенерированный код оптимизирован для Release-build-mode? - PullRequest
0 голосов
/ 14 ноября 2018

Мне интересно: когда .Net генерирует трассировки стека в сборке Release при выдаче исключений, номера строк часто отключаются, также некоторые кадры стека, которые должны существовать при анализе исходного кода, даже не печатаются, потому что они - предположительно - был оптимизирован прочь.

Итак, когда Visual Studio говорит, что много времени было потрачено в методе X, когда ЦП выбирает сборку релиза, можно ли этому доверять или она также может быть отключена из-за оптимизации?

1 Ответ

0 голосов
/ 14 ноября 2018

Профилировщику все равно, будете ли вы создавать код в режиме выпуска или отладки.Какой бы код ни выдавался, он будет его профилировать.Основная цель профилирования состоит в том, чтобы измерить различные метрики, связанные с производительностью, и найти узкие места.Таким образом, профилировщик спроектирован так, чтобы быть минимально навязчивым, чтобы иметь возможность проводить достаточно точные измерения.Как правило, вы будете профилировать оптимизированный код, потому что это код, который используется в производственных системах.

Что касается трассировки стека, то причины, по которым некоторые фреймы стека могут отсутствовать, обычно из-за встраивания метода, важной оптимизации, выполняемойJIT-компилятор.Поэтому, если A вызывает B, что, в свою очередь, вызывает C, и если JIT-компилятор вставил B в A, то стек вызовов покажет вам, что A вызвал C, и для B не будет фрейма, даже если он есть в исходном коде.Также некоторые кадры стека могут отсутствовать, потому что у профилировщика не было достаточной информации об отладке, поэтому он не мог полностью пройти по стеку.Точно так же номера строк исходного кода могут не совпадать, потому что JIT-компилятор может переставлять код или удалять некоторые фрагменты кода, что затрудняет точное сопоставление между собственным кодом и исходным кодом.Так что в итоге вы увидите приблизительное отображение.

...