2015-11-02 2 views
2

У меня проблема с десериализацией с помощью serviceStack.Text. Время выполнения сериализации сложного объекта возрастает экспоненциально с увеличением сложности объекта. В частности, этот объект содержит список простых объектов, увеличивая количество этих элементов в списке, время сериализации резко возрастает. как я могу сделать это быстрее?ServiceStack время десериализации

Это моя единственная конфигурация:

JsConfig.IncludeTypeInfo = true; 
JsConfig.IncludePublicFields = true; 
+0

Невозможно помочь без кода или примера данных, но больше данных * требуется больше времени для обработки. Вы пробовали другие десериализаторы вроде Json.NET? Если они демонстрируют сходную производительность, или, например, ServiceStack замедляется экспоненциально, когда другие замедляются линейно, тогда вопрос стоит исследовать. В противном случае, просто сравнивайте различные парсеры и выбирайте самые быстрые. –

+0

Я пробовал с Newtonsoft.Json и производительность была намного лучше, замедление было минимальным и линейным –

+0

Тогда может быть ошибка в ServiceStack.Text. Какую версию вы использовали? Последний, свободно доступный в NuGet, очень * старый. Более новые имеют пробные ограничения. Вы клонировали и попробовали последнюю из источника? ServiceStack не намного быстрее, чем Json.NET (если вообще). Это было верно три года назад, возможно, но в настоящее время вам придется запускать свои собственные тесты (подсказка) –

ответ

1

Я настоятельно рекомендую использовать:

JsConfig.IncludeTypeInfo = true; 

Какие силы ненужную информацию типа должны быть включены, которые излишне раздувается полезную нагрузку. В идеале ваши DTO должны быть четко определены и не содержать неизвестного object or Interface properties, который увеличивает сериализуемую связь и не сможет сериализоваться во многих стандартизованных сериализаторах.

Смежные вопросы