为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 中对 Gob 数据使用 Snappy 压缩?

在 Go 中对 Gob 数据使用 Snappy 压缩?

Go
茅侃侃 2021-08-30 14:45:18
我需要将一个结构保存到磁盘并稍后再次读取它,我试图将 IO 降至最低,但也不会花费很长时间来压缩和解压缩文件,所以我打算使用 Snappy 进行压缩,因为它非常快并且相对高效。通常我会在将 gob 保存到文件时对其进行 gzip 压缩,如下所示:func (t *Object) Save(filename string) error {    // Open file for writing    fi, err := os.Create(filename)    if err != nil {        return err    }    defer fi.Close()    // Attach gzip writer    fz := gzip.NewWriter(fi)    defer fz.Close()    // Push from the gob encoder    encoder := gob.NewEncoder(fz)    err = encoder.Encode(t.Classifier)    if err != nil {        return err    }    return nil}但是 Snappy 并没有附加到其他所有东西似乎都在使用的这些 Reader/Writer 接口。相反,它只提供基本功能:https : //godoc.org/code.google.com/p/snappy-go/snappyfunc Encode(dst, src []byte) ([]byte, error)func Decode(dst, src []byte) ([]byte, error)使用这个 Snappy 包来压缩 Gob 数据的最有效方法是什么,因为它被保存到文件(并读回)?理想情况下,我不想使用 ioutil.ReadAll 只从 gob 读取器读取一个字节,然后再次压缩它,因为这似乎是一种非常繁重的方法,会造成大量浪费的内存.我承认我并不完全理解读写器接口是如何工作的。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 326 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信