GoLang幾種讀檔案方式的比較

2022-07-28 06:18:17 字數 1671 閱讀 7509

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

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

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)

forif 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)

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

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提供的方法效率就是高。有空可以再從**層面再去分析一下。

GoLang幾種讀檔案方式的比較

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

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 操...