Метод protected async Task ExecuteRequestAsync
Вызывается при long polling, как await ExecuteRequestAsync
При этом внутри он сначала пытается (безуспешно, само собой) десериализовать ответ как MaxJsonSerializer.Deserialize<Response>
И только после того как это не удается - как MaxJsonSerializer.Deserialize
Зачем?
Ведь в самом начале метода уже есть вызов typeof(T), который уже отработал в любом случае.
Почему бы не положить его результат в локальную переменную, и не вызывать сразу MaxJsonSerializer.Deserialize, если typeof(T)==typeof(GetUpdatesResponse), чтобы не тратить впустую cpu/mem на безуспешный вызов десериализации.
Ведь эти респонсы могут сотнями в секунду выстреливать.
А typeof(GetUpdatesResponse) и typeof(Response) вполне можно положить в static readonly переменные в BaseApi.
Метод protected async Task ExecuteRequestAsync
Вызывается при long polling, как await ExecuteRequestAsync
При этом внутри он сначала пытается (безуспешно, само собой) десериализовать ответ как MaxJsonSerializer.Deserialize<Response>
И только после того как это не удается - как MaxJsonSerializer.Deserialize
Зачем?
Ведь в самом начале метода уже есть вызов typeof(T), который уже отработал в любом случае.
Почему бы не положить его результат в локальную переменную, и не вызывать сразу MaxJsonSerializer.Deserialize, если typeof(T)==typeof(GetUpdatesResponse), чтобы не тратить впустую cpu/mem на безуспешный вызов десериализации.
Ведь эти респонсы могут сотнями в секунду выстреливать.
А typeof(GetUpdatesResponse) и typeof(Response) вполне можно положить в static readonly переменные в BaseApi.