GoLang幾種讀檔案方式的比較

2021-07-28 11:14:35 字數 1829 閱讀 7315

golang提供了很多讀檔案的方式,一般來說常用的有三種。使用read加上buffer,使用bufio庫和ioutil 庫。

那他們的效率如何呢?用乙個簡單的程式來評測一下:

go**  

package main  

import(  

"fmt"

"os"

"flag"

"io"

"io/ioutil"

"bufio"

"time"

)  func read1(path string)string  

defer fi.close()  

chunks := make(byte,1024,1024)  

buf := make(byte,1024)  

for  

if 0 ==n   

// fmt.println(string(buf[:n]))  

}  return string(chunks)  

}  func read2(path string)string  

defer fi.close()  

r := bufio.newreader(fi)  

chunks := make(byte,1024,1024)  

buf := make(byte,1024)  

for  

if 0 ==n   

// fmt.println(string(buf[:n]))  

}  return string(chunks)  

}  func read3(path string)string  

defer fi.close()  

fd,err := ioutil.readall(fi)  

// fmt.println(string(fd))  

return string(fd)  

}  func main()  

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的日誌檔案,三種方式分別消耗的時間是:

go**  

cost time 105.006ms  

cost time 68.0039ms  

cost time 31.0018ms  

讀取29.3mb的**檔案:

go**  

cost time 390.0223ms  

cost time 194.0111ms  

cost time 83.0048ms  

讀取302mb的**檔案

go**  

cost time 40.8043338s  

cost time 1m5.0407201s  

cost time 8.8155043s  

這個差距就很明顯了,ioutil提供的方法效率就是高。有空可以再從**層面再去分析一下。

GoLang幾種讀檔案方式的比較

golang提供了很多讀檔案的方式,一般來說常用的有三種。使用read加上buffer,使用bufio庫和ioutil 庫。那他們的效率如何呢?用乙個簡單的程式來評測一下 package main import fmt os flag io io ioutil bufio time func rea...

golang中讀取檔案的幾種方式

golang中的檔案的讀取很多是做配置檔案使用,還有是讀取影象作為file類,儲存至檔案系統中,下面分別說明 type globalconf struct 配置檔案中字母要小寫,結構體屬性首字母要大寫 type dbconf struct var config globalconf配置檔案名稱 co...

幾種方式按home,幾種方式開啟應用,速度比較

system.out.println start context context instrumentationregistry.getcontext adb 操作home 鍵 第一種方式 3000毫秒速度 shellhelper.execrootcmd input keyevent 3 adb 操...