GoLang几种读文件方式的比较
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,GoLang提供了很多读文件的方式,一般来说常用的有三种。使用Read加上buffer,使用bufio库和ioutil 库。那他们的效率如何呢?用一个简单的程序来评测一下:package mainim
千家信息网最后更新 2025年12月02日GoLang几种读文件方式的比较
GoLang提供了很多读文件的方式,一般来说常用的有三种。使用Read加上buffer,使用bufio库和ioutil 库。
那他们的效率如何呢?用一个简单的程序来评测一下:
package mainimport( "fmt" "os" "flag" "io" "io/ioutil" "bufio" "time")func read1(path string)string{ fi,err := os.Open(path) if err != nil{ panic(err) } defer fi.Close() chunks := make([]byte,1024,1024) buf := make([]byte,1024) for{ n,err := fi.Read(buf) if err != nil && err != io.EOF{panic(err)} if 0 ==n {break} chunks=append(chunks,buf[:n]...) // fmt.Println(string(buf[:n])) } return string(chunks)}func read2(path string)string{ fi,err := os.Open(path) if err != nil{panic(err)} defer fi.Close() r := bufio.NewReader(fi) chunks := make([]byte,1024,1024) buf := make([]byte,1024) for{ n,err := r.Read(buf) if err != nil && err != io.EOF{panic(err)} if 0 ==n {break} chunks=append(chunks,buf[:n]...) // fmt.Println(string(buf[:n])) } return string(chunks)}func read3(path string)string{ fi,err := os.Open(path) if err != nil{panic(err)} defer fi.Close() fd,err := ioutil.ReadAll(fi) // fmt.Println(string(fd)) return string(fd)}func main(){ flag.Parse() file := flag.Arg(0) f,err := ioutil.ReadFile(file) if err != nil{ fmt.Printf("%s\n",err) panic(err) } fmt.Println(string(f)) start := time.Now() read1(file) t1 := time.Now() fmt.Printf("Cost time %v\n",t1.Sub(start)) read2(file) t2 := time.Now() fmt.Printf("Cost time %v\n",t2.Sub(t1)) read3(file) t3 := time.Now() fmt.Printf("Cost time %v\n",t3.Sub(t2))}运行命令go run read.go filename, 制定需要读取的文件就可以了。这里我比较了读取13.7MB的日志文件,三种方式分别消耗的时间是:
Cost time 105.006ms
Cost time 68.0039ms
Cost time 31.0018ms
读取29.3MB的媒体文件:
Cost time 390.0223ms
Cost time 194.0111ms
Cost time 83.0048ms
读取302MB的媒体文件
Cost time 40.8043338s
Cost time 1m5.0407201s
Cost time 8.8155043s
这个差距就很明显了,ioutil提供的方法效率就是高。有空可以再从代码层面再去分析一下。
文件
方式
媒体
媒体文件
效率
明显
一般来说
代码
命令
就是
层面
差距
常用
方法
日志
时间
程序
分析
消耗
评测
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳软件开发外包效果
正泰售电数据库破解
天津四川网络安全助理工程师
前端开发软件开发
网络安全争文稿
手抄报网络安全合理使用手机
网络安全产品执行新的标准
霍尼韦尔储存服务器
服务器远程桌面关掉了
根据数据库代码生成网页
天迈科技属于互联网公司吗
软件开发招聘题目
云海服务器管理中心华为云
正确的网络安全观 思政
java数据库批处理
起点app数据库失败
电子科技大学博导网络安全
2021网络安全重大事件
张家口人社服务器拒绝访问
2019新数据库技术
数据库课程内容
怎么把电脑做成局域网服务器
汉中5g软件开发培训技校
狮山企业网络安全产品
一对一网络技术咨询口碑推荐
人才数据库证书可以申请补贴吗
数据库修复宣传语
网络安全竞赛英文
无线网络技术或应用的有
电动汽车软件开发用什么语言