ego008
ego008
5647 0 0

golang circular buffer 应用

圆形缓冲区(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
Ring Buffer 的应用 https://blog.codingnow.com/2012/02/ring_buffer.html

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

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

0

See Also

Nearby


Discussion

Login Topics