golang提供了很多讀檔案的方式,一般來說常用的有三種。使用read加上buffer,使用bufio庫和ioutil 庫。
那他們的效率如何呢?用乙個簡單的程式來評測一下:
package main執行命令go run read.go filename, 制定需要讀取的檔案就可以了。這裡我比較了讀取13.7mb的日誌檔案,三種方式分別消耗的時間是: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))
}
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 操...