亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go vs JavaScript JSON 解析

Go vs JavaScript JSON 解析

Go
九州編程 2021-06-17 18:09:42
最近,我需要解析 Chrome 網絡瀏覽器在其開發工具中記錄事件時生成的 JSON,并從中獲取一些計時數據。Chrome 可以在很短的時間內產生相當大的數據量,所以我最初構建的 Ruby 解析器非常慢。由于我正在學習 Go,因此我決定同時使用 Go 和 JavaScript/Node 編寫腳本并進行比較。JSON 文件的最簡單形式就是我在這個 Gist 中所擁有的。它包含一個表示為獲取頁面而發送的請求的事件,以及表示響應的事件。通常情況下,有一個巨大的額外數據中進行篩選的量。這是它自己的問題,但不是我在這個問題中擔心的問題。我寫的 JavaScript 腳本在這里,我寫的 Go 程序在這里。這是我用 Go 寫的第一個有用的東西,所以我敢肯定它很糟糕。然而,有一兩件事我注意到的是它的很多不是JavaScript慢在解析較大的JSON文件。在 Go 中使用 119Mb JSON 文件的時間:$ time ./parse data.json= 22 Requests  Min Time:      0.77  Max Time:      0.77  Average Time:  0.77./gm data.json  4.54s user 0.16s system 99% cpu 4.705 total在 JavaScript/Node 中使用 119Mb JSON 文件的時間:$ time node parse.js data.json= 22 Requests  Min Time: 0.77  Max Time: 0.77  Avg Time: 0.77node jm.js data.json  1.73s user 0.24s system 100% cpu 1.959 total(本例中的最小/最大/平均時間都相同,因為我復制了 JSON 對象以獲得非常大的數據集,但這無關緊要。)我很好奇是否只是 JavaScript/Node 在解析 JSON 時速度更快(我猜這不會特別令人驚訝),或者我在 Go 程序中做錯了什么。我也很好奇我在 Go 程序中做錯了什么,因為我確信它有很多錯誤。請注意,雖然這兩個腳本不僅僅是解析,但在 Go 中肯定會 json.Unmarshal()在程序中增加大量時間。
查看完整描述

1 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

使用 Go,您將 JSON 解析為靜態類型結構。使用 JS 和 Ruby,您將其解析為哈希表。

為了將 JSON 解析為您定義的結構,json 包需要找出其字段的名稱和類型。為此,它使用了反射包,這比直接訪問這些字段要慢得多。

根據您解析數據后對數據的處理方式,額外的解析時間可能會物有所值。Go 數據結構比哈希表使用更少的內存,并且訪問速度更快。因此,如果您對數據進行大量處理,則節省的處理時間可能會超過額外的解析時間。


查看完整回答
反對 回復 2021-06-21
  • 1 回答
  • 0 關注
  • 215 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號