簡體   English   中英

JavaScript中JSON.parse()的復雜性是什么?

[英]What is the complexity of JSON.parse() in JavaScript?

標題說明了一切。 我將要解析一個非常大的JSON字符串,並且好奇這個內置方法的復雜性。

我希望它是θ(n),其中n是字符串中的字符數,因為它可以確定是否存在語法錯誤。

我試過搜索,但無法想出任何東西。

JSON是非常簡單的語法,甚至不需要前瞻。 一旦GC不涉及,那么它純粹是O(n)

我不知道瀏覽器中的實現,但您的假設在某一點上是正確的。 如果JSON主要包括字符串,那么它將是直接的並且非常線性。 如果你有很多浮點數,轉換數字會花費一些時間,但又是非常線性的(數字越多,數字越長,但與長字符串相比......非常相似)。

由於在大多數情況下,數組和對象被聲明為映射,因此內存分配會根據需要增長,並且通常是線性的。 許多(如果不是大多數)實現將使用Java作為后端。 這意味着垃圾收集,因此很難確定轉換所有數據所需的時間,因為它很大程度上取決於目標計算機上使用的內存模型的大小以及垃圾收集運行。 但是,它通常應該隨着項目添加到地圖而增長,因此它看起來大部分都是線性的。 我不希望實現使用realloc()這意味着復制數據,因此隨着數組/對象變得越來越大而越來越慢。

很奇怪添加更多信息我相信這是JSON.parse“高級”實現 我試圖找出是否鉻具有自己的它的源代碼,不知道是什么呢? 這是從Github的源頭。

注意事項:

  • 最壞的情況可能是處理需要O(N)時間的對象的情況,其中N是字符數。
  • 在傳遞一個reviver函數的情況下,它必須在創建它之后重新運行整個對象,但這只發生一次因此它可以忽略不計。 還取決於reviver功能正在做什么,你將不得不考慮它自己的時間復雜性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM