Как мне профилировать конкретный блок кода в vs2008 / 10? - PullRequest
2 голосов
/ 18 октября 2011

Я совершенно новичок в идее профилирования. Может ли кто-нибудь дать мне простые инструкции о том, как мне профилировать конкретную функцию?

Обе функции делают одно и то же, но одна из них в C # в vs2008, другая в C ++ в vs2010. Я действительно больше всего интересуюсь функцией C ++, поскольку она невероятно медленная, и я хочу выяснить, где и почему. Спасибо.

Ответы [ 2 ]

2 голосов
/ 19 октября 2011

простых шагов, как я бы профилировал конкретную функцию

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

Дело в том, что по сравнению с «настоящими» профилировщиками некоторые могут сказать, что это грубо, утомительно и т. Д. Так зачемэто?

Потому что это эффективно .

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

Вопрос любого профилировщика заключается не в том, насколько он «точен», а в том,

  • Какое ускорение обычно достигается при его использовании в реальном времени?(не игрушечные) программы?

Разве это не то, что вас волнует?

Вот пример ускорения в 43 раза со случайной паузой.

0 голосов
/ 18 октября 2011

Вот одна идея.Напишите тестовое приложение, которое вызывает эту функцию несколько раз и делает как можно меньше.Затем создайте два исполняемых файла с двумя версиями вашей функции.Теперь запустите профилировщик Very Sleepy для обоих исполняемых файлов и сравните результаты.Профилировщик покажет вам медленные части каждой функции.

Еще один профилировщик, который вам может пригодиться, - Shiny .Это работает совершенно по-другому.Вы должны вставить вызовы в функции или разделы кода, который хотите профилировать, а затем скомпилировать специальную версию вашего приложения с поддержкой профилировщика.

...