码迷,mamicode.com
首页 > 其他好文 > 详细

golang中copy文件时,buffer设多大值合适,性能对比

时间:2019-12-22 18:06:37      阅读:383      评论:0      收藏:0      [点我收藏+]

标签:ror   err   close   com   ring   fun   对比   pen   性能对比   

在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设多大值合适,性能对比

标签:ror   err   close   com   ring   fun   对比   pen   性能对比   

原文地址:https://www.cnblogs.com/aguncn/p/12080306.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!