Golang 逐行读取大文件性能对比

51reboot ·
这是我的测试,读取2g文件然后处理接着写入文件,一共花了36点几s,所以你的测试是不准确的,我的是固态硬盘,cpu差点,下面是代码: ``` package main import ( "bufio" "fmt" "os" "time" ) func main() { start := time.Now() ReadLine(`C:\Users\Administrator\Desktop\go_pro\src\io_pro\test12\test\阳光电影www.ygdy8.com.鬼影特攻:以暴制暴.BD.1080p.中英双字幕.mkv`) end := time.Now() fmt.Println(end.Sub(start)) } func ReadLine(filename string) { f, _ := os.Open(filename) defer f.Close() r := bufio.NewReader(f) newfile, err := os.OpenFile(`C:\Users\Administrator\Desktop\go_pro\src\io_pro\test12\test\阳光电影www.ygdy8.com.鬼影特攻:以暴制暴.BD.1080p.中英双字幕1111.mkv`, os.O_CREATE|os.O_WRONLY, 0666) checkErr(err) defer newfile.Close() for { s, err := readLine(r) if err != nil { break } newfile.WriteString(s) } } func readLine(r *bufio.Reader) (string, error) { line, isprefix, err := r.ReadLine() for isprefix && err == nil { var bs []byte bs, isprefix, err = r.ReadLine() line = append(line, bs...) } return string(line), err } func checkErr(err error) { if err != nil { fmt.Println(err) } } ```
#3
更多评论
受硬件影响较大,不说明配置确实难以比较
#1
同时你把读取的东西忽略掉也是受影响的,10g东西30s是不可能的事情
#2