我正在使用 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.Time或float64。
问题是这些文件在磁盘上占用了 5GB 空间。一旦我将它们加载到内存中,它们就会消耗 12GB!
我使用ioutil.ReadFile(path)后发现,正如预期的那样,这几乎与磁盘上的大小完全相同。
这是我的解析器的代码,为了可读性省略了错误,如果您可以帮助我排除故障:
csv.NewReader(file).ReadAll()
Run Code Online (Sandbox Code Playgroud)
我尝试通过在函数调用结束时将columnData和设置为 nil 来进行故障排除,但没有任何变化。reader