Могу ли я связать образец Profiler с методом, чтобы избежать нескольких вызовов Profiler.EndSample()?C#

Место общения программистов C#
Ответить
Anonymous
 Могу ли я связать образец Profiler с методом, чтобы избежать нескольких вызовов Profiler.EndSample()?

Сообщение Anonymous »

Я профилировал свой код в Unity с помощью UnityEngine.Profiling, и это было очень полезно — я смог легко определить, какие части моего кода выполняются дольше всего.
При использовании Profiler.BeginSample образец записывается до тех пор, пока не будет достигнут следующий вызов Profiler.EndSample. В большинстве случаев это нормально, но есть крайний случай, когда меня немного раздражает то, как это работает. Возьмем простой пример:

Код: Выделить всё

bool NumberIsEven(int x)
{
Profiler.BeginSample("NumberIsEven");

if (x % 2 == 0) {
Profiler.EndSample();
return true;
}
Profiler.EndSample();
return false;

}
Здесь мне пришлось использовать Profiler.EndSample() дважды, поскольку у нас есть два возможных места, где функция может получить возврат. Это, конечно, не так уж и плохо, но вместо этого представьте себе функцию, в которой у нас есть несколько разных мест, где мы можем нажать оператор return - возможно, что-то, связанное, например, с массивным оператором переключателя. Размещение Profiler.EndSample() непосредственно перед каждым из них довольно раздражает.
Вместо этого мне интересно, можно ли каким-то образом привязать образец к методу, в котором мы сейчас находимся, избегая необходимости использования нескольких операторов Profiler.EndSample(). Например, я хочу что-то вроде этого:

Код: Выделить всё

//This code is functionally identical to the above example.
bool NumberIsEven(int x)
{
TieSampleToCurrentMethod("NumberIsEven"); //Begins a profiler sample tied to this function which will end whenever this function is exited

if (x % 2 == 0) {
return true; //Profiler sample automatically ends when we hit this
}
return false; //Profiler sample automatically ends when we hit this

}
Могу ли я это сделать? Если да, то как?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ndsample-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»