2016-05-17 7 views
1

Я использую dotTrace для профилирования компилятора, который имеет некоторые проблемы с производительностью. Будучи компилятором, стек вызовов сильно рекурсивен, а сворачивание в виде дерева вызовов обычно приводит к тому, что вещи становятся еще более запутанными чаще, чем нет.dotTrace: Кто вызывает мой метод?

Когда я сортирую представление Plain List по собственному времени, я обнаружил, что определенный метод использует большую часть времени выполнения. Глядя на код, я не могу сделать этот способ быстрее, но я считаю, что добавление некоторой memoization может сделать это, поэтому его не нужно вызывать почти так же часто. Проблема в том, что у меня есть время выяснить, где ее добавить.

Когда вы нажимаете на метод в верхней панели в представлении Plain List, он показывает методы, которые этот метод вызывает в нижней панели, что является полезным, но, насколько я могу судить, это не дает вам гораздо более полезная информация , какие методы называют этот метод. Есть ли способ получить статистическую информацию об этом, поэтому я знаю, где сосредоточиться на добавлении memoization?

ответ

3

В обычном виде списка вкладки All Calls щелкните правой кнопкой мыши по вашему методу и выберите Open Current Method Instance (или выберите способ и нажмите CTRL+T). Это откроет новую вкладку для вашего метода в dotTrace.

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

+0

Awesome, спасибо! Это показывает, что 96% звонков поступают из одного конкретного места, поэтому теперь я знаю, где сосредоточиться на ... –

+0

После добавления заметок это уменьшило время выполнения всего цикла компиляции более чем на 50%, поэтому еще раз спасибо! –

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