GoLang 文件写入方式效率对比

GoLang 文件写入方式效率对比,第1张

概述golang 对于文件写入有四种方式,分别作了写入效率对比,但是看了原码。。。同根生。。。即然写了就贴出来吧: package mainimport ( "bufio" //缓存IO "fmt" "io" "io/ioutil" //io 工具包 "os" "time")const ( TEST_WRITING_LINE    = 10000000 TEST_WRITIN

golang 对于文件写入有四种方式,分别作了写入效率对比,但是看了原码。。。同根生。。。即然写了就贴出来吧:

packagemainimport(	"bufio"//缓存IO	"fmt"	"io"	"io/IoUtil"//io工具包	"os"	"time")const(	TEST_WRITING_liNE=10000000	TEST_WRITING_CONTENT="Go是Google开发的一种编译型,可平行化,并具有垃圾回收功能的编程语言。")funcwriteString(writerfunc(string),f*os.file){	fori:=0;i<TEST_WRITING_liNE;i++{		writer(TEST_WRITING_CONTENT)	}	iff!=nil{		f.Close()	}}/**from:http://www.isharey.com/?p=143*/funcmain(){	varttime.Time	t=time.Now()	writeString(writetofile1("testfile1.txt"))	fmt.Printf("使用io.WriteString写入文件:%v\n",time.Now().Sub(t))	t=time.Now()	//writeString(writetofile2("testfile2.txt"))	//fmt.Printf("使用IoUtil.Writefile写入文件:%v\n",time.Now().Sub(t))	//t=time.Now()	writeString(writetofile3("testfile3.txt"))	fmt.Printf("使用file(Write,WriteString)写入文件:%v\n",time.Now().Sub(t))	t=time.Now()	writeString(writetofile4("testfile4.txt"))	fmt.Printf("使用bufio.NewWriter写入文件:%v\n",time.Now().Sub(t))}funcwritetofile1(filenamestring)(func(string),*os.file){	/*****************************第一种方式:使用io.WriteString写入文件***********************************************/	varf*os.file	varerrerror	f,err=os.Create(filename)//创建文件	iferr!=nil{		panic(err)	}	returnfunc(contentstring){		_,err:=io.WriteString(f,content)//写入文件(字符串)		iferr!=nil{			panic(err)		}	},f}funcwritetofile2(filenamestring)(func(string),*os.file){	/*****************************第二种方式:使用IoUtil.Writefile写入文件***********************************************/	returnfunc(contentstring){		varbytes=[]byte(content)		err:=IoUtil.Writefile(filename,bytes,0666)//写入文件(字节数组)		iferr!=nil{			panic(err)		}	},nil}funcwritetofile3(filenamestring)(func(string),*os.file){	/*****************************第三种方式:使用file.Write/file.WriteString写入文件***********************************************/	f,err:=os.Create(filename)//创建文件	iferr!=nil{		panic(err)	}	returnfunc(contentstring){		varbytes=[]byte(content)		_,err:=f.Write(bytes)//写入文件(字节数组)		iferr!=nil{			panic(err)		}	},f}funcwritetofile4(filenamestring)(func(string),*os.file){	/*****************************第四种方式:使用bufio.NewWriter写入文件***********************************************/	f,err:=os.Create(filename)//创建文件	iferr!=nil{		panic(err)	}	w:=bufio.NewWriter(f)//创建新的Writer对象	returnfunc(contentstring){		_,err=w.WriteString(content)//写入文件(字节数组)		iferr!=nil{			panic(err)		}		w.Flush()	},f}

测试如下图:

$gorunmain.go使用io.WriteString写入文件:34.3164842s使用file(Write,WriteString)写入文件:31.6852421s使用bufio.NewWriter写入文件:28.9083069s

bufio这边主要是加了一层缓冲,

其实都差不多,如果是像log那种一条一条输出的,个人觉得还是bufio好一些。。。

读取性能,有个写过。。。这是传送门http://www.jb51.cc/article/p-dkzgbuhh-bqv.html

转发请注明出处

参照:http://www.android100.org/html/201407/28/47230.html

总结

以上是内存溢出为你收集整理的GoLang 文件写入方式效率对比全部内容,希望文章能够帮你解决GoLang 文件写入方式效率对比所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1285098.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存