欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

golang json 慢

錢琪琛1年前8瀏覽0評論

最近在使用 golang 處理 JSON 數(shù)據(jù)時遇到了一個問題,就是解析 JSON 數(shù)據(jù)的速度非常慢。

我的應(yīng)用場景是讀取一個大型 JSON 文件,然后解析成一個 Go 對象列表進(jìn)行操作。但是讀取和解析的時間比我預(yù)計的要多得多。

我想到了一些可能的原因,例如 I/O 操作和 Go 語言的垃圾回收機(jī)制。但是在仔細(xì)檢查和測試之后,我發(fā)現(xiàn)問題的根本原因是 Go 語言自身的 JSON 解析庫。

// 一個例子
users := make([]User, 0, 1000)
file, err := os.Open(filepath)
if err != nil {
 return nil, err
}
defer file.Close()
decoder := json.NewDecoder(file)
for {
 var u User
 if err := decoder.Decode(&u); err == io.EOF {
break
 } else if err != nil {
return nil, err
 }
 users = append(users, u)
}

上面這段代碼是一個簡單的 JSON 解析器。但是,當(dāng)我在本地機(jī)器上解析一個 100 MB 大小的文件時,它需要約 30 秒才能完成。我嘗試過幾個不同的 JSON 解析庫,但是它們的解析速度非常相似。

因此,我得出結(jié)論:Go 語言自帶的 JSON 解析庫就是太慢了。

作為一種處理 JSON 的流行語言, Go 語言應(yīng)該提供更快速和有效的 JSON 解析庫。但是,目前的情況似乎仍然很糟糕。

如果你也遇到了類似的問題,那么我建議你嘗試一些替代庫,例如:github.com/valyala/fastjson 或 github.com/json-iterator/go。它們的性能和速度比 Go 自帶庫要好很多。