栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Golang:如何有效确定文件中的行数?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang:如何有效确定文件中的行数?

这是

bytes.Count
用于查找换行符的更快的行计数器。

它之所以更快,是因为它消除了返回整行所需的所有额外逻辑和缓冲,并利用了字节包提供的某些程序集优化功能来搜索字节片中的字符。

较大的缓冲区在这里也有帮助,尤其是对于较大的文件。在我的系统上,使用我用于测试的文件,32k缓冲区是最快的。

func lineCounter(r io.Reader) (int, error) {    buf := make([]byte, 32*1024)    count := 0    lineSep := []byte{'n'}    for {        c, err := r.Read(buf)        count += bytes.Count(buf[:c], lineSep)        switch {        case err == io.EOF: return count, nil        case err != nil: return count, err        }    }}

和基准输出:

BenchmarkBuffioScan   500      6408963 ns/op     4208 B/op    2 allocs/opBenchmarkBytesCount   500      4323397 ns/op     8200 B/op    1 allocs/opBenchmarkBytes32k     500      3650818 ns/op     65545 B/op   1 allocs/op


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436161.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号