pool

package
v2.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 16, 2022 License: MIT Imports: 0 Imported by: 0

Documentation

Overview

Package pool provides pool structures to help reduce garbage collector pressure.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Bytes

type Bytes struct {
	// contains filtered or unexported fields
}

Bytes is a pool of byte slices that can be re-used. Slices in this pool will not be garbage collected when not in use.

func NewBytes

func NewBytes(max int) *Bytes

NewBytes returns a Bytes pool with capacity for max byte slices to be pool.

func (*Bytes) Get

func (p *Bytes) Get(sz int) []byte

Get returns a byte slice size with at least sz capacity. Items returned may not be in the zero state and should be reset by the caller.

func (*Bytes) Put

func (p *Bytes) Put(c []byte)

Put returns a slice back to the pool. If the pool is full, the byte slice is discarded.

type Generic

type Generic struct {
	// contains filtered or unexported fields
}

Generic is a pool of types that can be re-used. Items in this pool will not be garbage collected when not in use.

func NewGeneric

func NewGeneric(max int, fn func(sz int) interface{}) *Generic

NewGeneric returns a Generic pool with capacity for max items to be pool.

func (*Generic) Get

func (p *Generic) Get(sz int) interface{}

Get returns a item from the pool or a new instance if the pool is empty. Items returned may not be in the zero state and should be reset by the caller.

func (*Generic) Put

func (p *Generic) Put(c interface{})

Put returns an item back to the pool. If the pool is full, the item is discarded.

type LimitedBytes

type LimitedBytes struct {
	// contains filtered or unexported fields
}

LimitedBytes is a pool of byte slices that can be re-used. Slices in this pool will not be garbage collected when not in use. The pool will hold onto a fixed number of byte slices of a maximum size. If the pool is empty or the required size is larger than max size, it will return a new byte slice. Byte slices added to the pool that are over the max size are dropped.

func NewLimitedBytes

func NewLimitedBytes(capacity int, maxSize int) *LimitedBytes

NewBytes returns a Bytes pool with capacity for max byte slices to be pool.

func (*LimitedBytes) Get

func (p *LimitedBytes) Get(sz int) []byte

Get returns a byte slice size with at least sz capacity. Items returned may not be in the zero state and should be reset by the caller.

func (*LimitedBytes) Put

func (p *LimitedBytes) Put(c []byte)

Put returns a slice back to the pool. If the pool is full, the byte slice is discarded. If the byte slice is over the configured max size of any byte slice in the pool, it is discarded.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL