Производительность json.net более 77 килобайт - PullRequest
5 голосов
/ 19 января 2012

Я профилирую свое приложение ASP.NET MVC, и когда я запускаю свою локальную версию на IIS, я заметил, что десериализация объекта размером около 77 КБ занимает около 100 мс, это ожидалось?

Кроме того, при профилировании процессор, по-видимому, максимально работает, является ли задача десериализации очень интенсивной, или я должен искать в другом месте?

Спасибо за любую помощь, которую вы можете оказать.

Ответы [ 2 ]

2 голосов
/ 19 января 2012

Сложность объекта обычно играет главную роль в отношении десериализации.Объекты, которые содержат дочерние объекты в рекурсивном шаблоне, потребляют процессор и память для правильного анализа.

Простая карта Name: Value может стать намного более сложной, если Value - другая карта (объект) Name: Value.Если этот тип рекурсии продолжается, вы можете попытаться денормализовать (делая значение Name: [primitive] Value) свой JSON, чтобы системе было легче разобрать.

Денормализация в отношении MVC (данные rdbms)может быть немного сложно.Сглаживание отношений «многие ко многим» не представляется возможным во многих случаях.

Вы можете попробовать сравнить JSON.net со встроенным JavaScriptSerializer и посмотреть, сможете ли вы добиться улучшения.

0 голосов
/ 19 января 2015

В определенный момент объекты становятся громоздкими для десериализации, учитывая, что несколько сред сериализации, включая JSON.NET, используют Reflection.Кроме того, когда объект достигает размера 85 КБ, он сразу же переносится сборщиком мусора в кучу больших объектов, что отрицательно сказывается на производительности.

Я предлагаю использовать JSON # - стентрический анализатор .NET JSON для повышения производительности и устранения узких мест в памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...