有缓冲版本吗io.Pipe https://golang.org/pkg/io/#Pipe(在标准库或第三方库中)在我推出自己的库之前?
上下文:我正在尝试使用这个解决方案 https://stackoverflow.com/a/36229262/1536933用于解析使用bzip2压缩的JSON数据,使得解压和解析并行进行,但发现加速很小。每百万条记录解析未压缩数据大约需要 22 秒。解压缩这么多数据大约需要相同的时间。正如预期的那样,在单线程上执行这些操作大约需要 44 秒。使用上述解决方案大约需要 41 秒。
io.Pipe 的文档说:
管道上的读取和写入是一对一匹配的,除非
需要多次读取才能消耗一次写入。也就是说,每个
写入 PipeWriter 块,直到满足一个或多个
从完全消耗写入数据的 PipeReader 中读取。这
数据直接从写入复制到相应的读取(或
读);没有内部缓冲。
我怀疑这可能是一个问题,具体取决于 bzip2 解压缩器写入数据的方式以及 JSON 解析器读取数据的方式,所以我想尝试缓冲版本。
这就是bufio https://golang.org/pkg/bufio包是为了.它可以让你转动任何io.Reader
进入缓冲阅读器NewReader https://golang.org/pkg/bufio/#NewReader,或任何io.Writer
进入缓冲写入器NewWriter https://golang.org/pkg/bufio/#NewWriter.
(缓冲 IO 是否真的能帮助解决您的具体问题,我不知道......)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)