golang中copy文件时,buffer设多大值合适,性能对比
Posted aguncn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang中copy文件时,buffer设多大值合适,性能对比相关的知识,希望对你有一定的参考价值。
在go语言中,copy文件时,大文件使用buffer缓冲,可以明显加快时间,
但这个值多大合适呢?
除了考虑计算机的硬件资源,还要考虑CP文件的大小。
如果都是100m之内的小文件,一次CP完就可以。
但如果文件大于1G,建设还是设置一个大一些的缓冲来操作。
copy.go
func Copy(src, dst string, BUFFERSIZE int64) error { sourceFileStat, err := os.Stat(src) if err != nil { return err } if !sourceFileStat.Mode().IsRegular() { return fmt.Errorf("%s is not a regular file.", src) } source, err := os.Open(src) if err != nil { return err } defer source.Close() _, err = os.Stat(dst) if err == nil { return fmt.Errorf("File %s already exists.", dst) } destination, err := os.Create(dst) if err != nil { return err } defer destination.Close() if err != nil { panic(err) } buf := make([]byte, BUFFERSIZE) for { n, err := source.Read(buf) if err != nil && err != io.EOF { return err } if n == 0 { break } if _, err := destination.Write(buf[:n]); err != nil { return err } } return err }
以上是关于golang中copy文件时,buffer设多大值合适,性能对比的主要内容,如果未能解决你的问题,请参考以下文章