#c# #.net
#c# #.net
Вопрос:
Я хотел бы подсчитать, сколько раз следующие методы выполнялись с момента запуска приложения. Как я могу это сделать?
System.Drawing.Graphics.FromHdcInternal(IntPtr hdc)
System.Drawing.BufferedGraphicsContext.CreateBuffer(IntPtr src, Int32 offsetX, Int32 offsetY, Int32 width, Int32 height)
Ответ №1:
AQTime делает это без труда.
Ответ №2:
Я могу придумать два способа. Одним из них является использование профилировщика, который может быть самым простым.
Другой способ заключается в том, чтобы обернуть вызовы в функцию, которая подсчитывает их за вас. Поиск и замена сделают все остальное.
private int invokeCount = 0;
public static Graphics FromHdcInternalWrapped(IntPtr hdc)
{
invokeCount ;
return Graphics.FromHdcInternal(hdc);
}
Лично я бы придерживался профилировщика.
Ответ №3:
Каноническим, самым простым способом, вероятно, было бы просто использовать приложение профилировщика. Лично у меня есть хороший опыт работы с JetBrains dotTrace, но есть и другие варианты.
По сути, что вы делаете, так это позволяете профилировщику запускать ваше приложение, и оно будет отслеживать все вызовы методов в вашем коде. Затем он покажет вам, сколько времени было потрачено на выполнение этих методов и сколько раз они вызывались.
Предполагая, что причиной вашего желания узнать это на самом деле является производительность, я думаю, что неплохо бы взглянуть на профилировщик. Вы можете попытаться оптимизировать свой код, сделав обоснованное предположение о том, где находятся узкие места, но если вы используете профилировщик, вы действительно можете это измерить. И мы все знаем, дважды отмерь, один раз отрежь 😉