golang circular buffer 应用

By ego008 at 2018-02-22 18:28 • 1218次点击
ego008

圆形缓冲区(circular buffer),也称作圆形队列(circular queue),循环缓冲区(cyclic buffer),环形缓冲区(ring buffer),是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。

一个golang circular buffer 栗子:

buf, _ := NewBuffer(6)
buf.Write([]byte("hello world"))

if string(buf.Bytes()) != " world" {
    panic("should only have last 6 bytes!")
}

Golang circular (ring) buffer https://github.com/armon/circbuf 8
Ring Buffer 的应用 https://blog.codingnow.com/2012/02/ring_buffer.html 10

标准库 https://golang.org/pkg/container/ring/#example_Ring_Do 5

https://github.com/glycerine/rbuf 6 对于I/O较重的应用程序,用 circbuf 替换了 bytes.Buffer,看到内存消耗从8GB变为25MB、跑得更快。


golang, circular, buffer


目前尚无回复
登录 后发表评论