Однако у меня непреднамеренные проблемы. Сгенерированный источником Jsonserializer класс занимает ~ 300 мс для завершения загрузки. Профилирование показывает, что класс jsonserializer тратит чрезмерное время, вызывая getTypeInfo для каждого свойства в моей схеме, созданной источником. В то время как фактическая десериализация быстрая (несколько миллисекундов) и использует одну треть распределения кучи по сравнению с Newtonsoft, общая производительность хуже: ~ 300 мс с System.Text.Json против ~ 200 мс с Newtonsoft.Json .
my spective. Время, особенно принесло пользу сценариям AOT. Тот факт, что GetTypeInfo все еще называется сильно, что что-то не работает, как и ожидалось, с настройкой моей генерации источников. Это ожидаемое поведение, или это указывает на то, что мое поколение источника не настроена правильно? Какие шаги я должен предпринять для достижения обещанных преимуществ работы?
Код: Выделить всё
using System.Text.Json.Serialization;
[JsonSourceGenerationOptions(IncludeFields = true, NumberHandling = JsonNumberHandling.AllowReadingFromString)]
[JsonSerializable(typeof(MainConcreteClass))]
[JsonSerializable(typeof(ConcreteClass2))]
[JsonSerializable(typeof(ConcreteClass3))]
internal partial class AppJsonContext : JsonSerializerContext { }
public class DataFetcher
{
public void Fetch()
{
HTTPRequest request = new HTTPRequest(
new Uri("https://localhost:5000/my_api"),
HeaderMethod("POST"), (req, res) => {
// Takes about 300ms
System.Text.Json.JsonSerializer.Deserialize(
response.Data, AppJsonContext.Default.MainConcreteClass);
});
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... lower-than