小编Dev*_*kla的帖子

Golang 读取 csv 消耗的内存空间是磁盘空间的 2 倍以上

我正在使用 Golang 将大量 CSV 文件加载到结构中。结构是

type csvData struct {
    Index   []time.Time
    Columns map[string][]float64
}    
Run Code Online (Sandbox Code Playgroud)

我有一个解析器使用:

csv.NewReader(file).ReadAll()
Run Code Online (Sandbox Code Playgroud)

然后我迭代行,并将值转换为其类型:time.Timefloat64

问题是这些文件在磁盘上占用了 5GB 空间。一旦我将它们加载到内存中,它们就会消耗 12GB!

我使用ioutil.ReadFile(path)后发现,正如预期的那样,这几乎与磁盘上的大小完全相同。

这是我的解析器的代码,为了可读性省略了错误,如果您可以帮助我排除故障:

csv.NewReader(file).ReadAll()
Run Code Online (Sandbox Code Playgroud)

我尝试通过在函数调用结束时将columnData和设置为 nil 来进行故障排除,但没有任何变化。reader

csv go

1
推荐指数
1
解决办法
1492
查看次数

标签 统计

csv ×1

go ×1