2012-05-30 80 views
1

我有很多的遺留代碼,其中json通過使用for循環手動解析。一般需要O(n)時間。我知道json.net將在timespace但獲取它是如何工作的洞察力方面更好,會幫我做出其是否值得的努力,實際上繼續和投資的一切移動到JSON的時間和人力的決定。淨。序列化和反序列化如何在內部工作?

+0

你期待的算法是不是通過單一數據迭代更快? –

+1

你希望擺脫這個問題?任何人都可以獲取有關JSON.NET是如何工作的,簡單地通過查看源代碼的見解:http://json.codeplex.com/SourceControl/changeset/view/65597 –

+0

我想他正在尋找容器內工作 –

回答

2

套用你的問題成爲一個更一般的,讓我們假設你正在尋找的建議上JSON序列化實施選擇各種場景。

我所知道的三個明顯這個問題的答案:

  • NewtonSoft JSON.NET
    • 提供的功能豐富,性能優異
  • ServiceStack.Text
    • 簡潔而熾烈的性能
  • BCL JsonSerializer
    • 避免了第三方庫的依賴,但是較慢顯著

如果你不關心的第三方庫的依賴,去的第一選擇,因爲它會給你性能和功能。如果您不需要大量功能,請評估ServiceStack.Text是否滿足您的需求(如果不確定,請使用JSON.NET)。在任何其他情況下,堅持你擁有的東西。

此外,在知道此特定區域是性能瓶頸之前(或以其他方式保證替換,例如因爲它是維護問題)之前,請不要花時間更換您的JSON代碼以使代碼更快。如果您正在考慮更換代碼以提高性能,請隔離一些方法,以使用備用實現或庫對照您的當前代碼與相似場景進行基準測試,以避免根據假設做出決策。

末,知道它是如何工作的內部不應該出現在你的決策過程中的一個因素,除非您特別計劃可以修改它的來源(或其他需要能夠理解它)。

+0

謝謝你的幫助 –