2012-05-30 2 views
1

У меня есть много устаревшего кода, где json разобран вручную с помощью цикла for. Это занимает O(n) раз в целом. Я знаю, что json.net будет лучше с точки зрения time и space, но получить представление о том, как это работает, поможет мне принять обоснованное решение о том, стоит ли на самом деле идти вперед и инвестировать время и силы человека, чтобы переместить все на json. сеть.Как Serialize и De-serialize работают внутри?

+0

Вы ожидаете алгоритм, который быстрее, чем одна итерация через данные? –

+1

Что вы надеетесь уйти от этого вопроса? Любой может получить представление о том, как работает JSON.NET, просто взглянув на исходный код: http://json.codeplex.com/SourceControl/changeset/view/65597 –

+0

Я думаю, он ищет внутри работы –

ответ

2

Чтобы перефразировать ваш вопрос в более общем, давайте предположим, что вы искали совет, по которому реализация сериализации JSON выбирала для различных сценариев.

Я знаю три очевидных ответов на этот вопрос:

  • NewtonSoft Json.NET
    • Обеспечивает множество функций и отличную производительность
  • ServiceStack.Text
    • Обеспечивает простоту и великолепную производительность
  • BCL JsonSerializer
    • Избегает 3-й зависимости библиотеки партии, но значительно медленнее

Если вы не заботитесь о 3-зависимости библиотечной партии, идти на первый вариант, как это даст вам производительность и функциональность. Если вам не нужна тонна функций, оцените, делает ли ServiceStack.Text то, что вам нужно (если не уверен, перейдите в JSON.NET). В любом другом случае придерживайтесь того, что у вас есть.

Кроме того, не тратьте время на создание кода быстрее, заменив код JSON, прежде чем вы узнаете, что эта конкретная область является узким местом производительности (или, наоборот, требует замены, например, потому что это проблема обслуживания). Если вы планируете заменить код для повышения производительности, выделите несколько методов для профилирования и сравните свой текущий код с аналогичными сценариями, используя альтернативную реализацию или библиотеку, чтобы избежать принятия решения на основе допущений.

Последнее, зная, как оно работает внутри страны, не должно быть фактором в процессе принятия решений, если вы специально не планируете изменять его источник (или, иначе, должны быть способны его понять).

+0

спасибо, что было полезно –

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