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设多大值合适,性能对比的主要内容,如果未能解决你的问题,请参考以下文章

初始建库SGA该设多大PGA该设多大的建议

这次终于知道 数据库 “连接池” 到底应该设多大了

转数据库连接池到底应该设多大

vmware安装oracle 12c rac内存一般设多大

golang环境protocol buffer的安装

数据库连接池到底应该设多大?