Мы выполняем довольно много профилирования и используем Shark (только OSX), vTune , Glowcode и старый фаворит счетчиков / часов.
Из этих Shark, безусловно, лучшая (и бесплатная!), В той мере, в которой я стараюсь сохранить код переносимым в OSX, чтобы я мог использовать его для профилирования. К сожалению, он не соответствует вашим требованиям.
vTune был совершенно не впечатляющим, он был слишком сложен, чтобы получить приличный профиль, не будучи экспертом в том, что все параметры профилирования, интерфейсный интерфейс часто падал или просто ломался, и его сэмплер не пробовал стек вызовов сделать его практически бесполезным для того, чтобы увидеть, как возникают узкие места в вашей программе. Это было также дорого (хотя мы закончили тем, что купили лицензию). В его пользу это кроссплатформенный, и вы можете получить 30-дневную пробную версию, чтобы увидеть, если вам это нравится.
Glowcode был неплохим, только для окон IIRC, а также предлагает бесплатную пробную версию. Прошло много времени с тех пор, как мы его использовали, но, возможно, это неплохое место для начала.
Мы в основном используем часы для нашего встроенного кода, который запускает один процесс с небольшими или нулевыми издержками системы - это означает, что мы можем точно подсчитать количество тактов, которые выполняются операциями. Лично я не рекомендовал бы «катить свой собственный» код профилирования (за исключением грубого масштаба чрезвычайно * 1014) по двум причинам:
- Трудно объяснить, как ваш процесс запланирован и какие другие операции выполняются.
- Профилировщики часто выделяют горячие точки, которые вы никогда не считали бы горячими точками без их вмешательства.