为了减少默认的 64k 扫描仪缓冲区(对于内存不足的微型计算机),我尝试使用此缓冲区和自定义拆分功能:
scanner.Buffer(make([]byte, 5120), 64) scanner.Split(Scan64Bytes)
在这里我注意到第二个缓冲区参数“max”没有效果。如果我改为插入例如0、1、5120或bufio.MaxScanTokenSize,我看不出有什么区别。只有第一个参数“buf”有结果。如果容量太小,则扫描不完整,如果容量太大,则 B/op benchmem 值会增加。
从文档:
最大令牌大小是 max 和 cap(buf) 中的较大者。如果 max <= cap(buf),Scan 将只使用这个缓冲区而不进行分配。
我不明白哪个是正确的最大值。你能给我解释一下吗?
茅侃侃
相关分类