wuyongxiu / wuyongxiu.github.io

随便记录一下......
http://wuyongxiu.github.io
6 stars 3 forks source link

golang将文件一次全部读取的几种方式比较 #10

Closed wuyongxiu closed 8 years ago

wuyongxiu commented 8 years ago

小demo,测试下将文件一次全部读取到内存中的字符串变量里

① 创建buffer,结合io.copy func TestIOcopy(t *testing.T){ ts:=time.Now().UnixNano() buf:=bytes.NewBuffer(nil) file,_:=os.Open("F:/SVN/tempt/test.log") defer file.Close() io.Copy(buf,file) te:=time.Now().UnixNano() fmt.println(te-ts,len(b)) fmt.Println(buf.Len()) }

Size: 2881883 Time: 0.007s (5065行) Size:23055080 Time: 0.026s (40520行) Size: 79519720 Time: 0.098s (140000行) Size: 318078884 Time:0.463s (560000行)

② 使用ioutil读取文件所有内容 func Testioutil(t *testing.T){ ts:=time.Now().UnixNano() file,:=os.Open("F:/SVN/tempt/test.log") defer file.Close() b,:=ioutil.ReadAll(file) te:=time.Now().UnixNano() fmt.println(te-ts,len(b)) fmt.Println(len(b)) } 结果: Size:2881883 Time: 0.012s (5065行) Size:23055080 Time: 0.048s (40520行) Size: 79519720 Time: 0.129s (140000行) Size: 318078884 Time:0.379s (560000行)