Skip to content
/ buffer Public

Package buffer implements a variable-sized bytes pool.

License

Notifications You must be signed in to change notification settings

hslam/buffer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

buffer

PkgGoDev Build Status codecov Go Report Card LICENSE

Package buffer implements a variable-sized bytes pool.

Get started

Install

go get github.com/hslam/buffer

Import

import "github.com/hslam/buffer"

Usage

Simple Example

package main

import (
	"github.com/hslam/buffer"
)

func main() {
	buf := buffer.GetBuffer(1024)
	buffer.PutBuffer(buf)
}

Example

package main

import (
	"github.com/hslam/buffer"
)

func main() {
	buffers := buffer.NewBuffers(1024)
	size := 65536

	buf := buffers.GetBuffer(size)
	buffers.PutBuffer(buf)

	p := buffers.AssignPool(size)
	buf = p.GetBuffer(size)
	p.PutBuffer(buf)
}

Benchmark

go test -bench=. -benchmem -benchtime=10s -timeout 30m

goos: darwin
goarch: amd64
pkg: github.com/hslam/buffer
BenchmarkAssignPool-8        	1000000000	         4.507 ns/op	       0 B/op	       0 allocs/op
BenchmarkAssignSizedPool-8   	699822374	        16.72 ns/op	       0 B/op	       0 allocs/op
BenchmarkBuffers-8           	254406498	        46.63 ns/op	      24 B/op	       1 allocs/op
BenchmarkSizedBuffer-8       	302837005	        39.32 ns/op	      24 B/op	       1 allocs/op
PASS
ok  	github.com/hslam/buffer	51.466s

License

This package is licensed under a MIT license (Copyright (c) 2021 Meng Huang)

Author

buffer was written by Meng Huang.

About

Package buffer implements a variable-sized bytes pool.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages