sorted

package
v1.0.21 Latest Latest
Warning

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

Go to latest
Published: Dec 12, 2023 License: MIT Imports: 6 Imported by: 0

README

Sorted integer slices for small payloads

This sub-package contains a set of sorted sclices for minimising the payload. This can be useful in certain situations where you can sort a slice and send it to through the wire in the sorted format. This is essentially a trade-off between CPU and network bandwith.

Usage

This is a drop-in type, so simply use one of the types available in the package (Bools, Int32s, Uint64s ...) and Marshal or Unmarshal using the binary package.

// Marshal some numbers
v := sorted.Int32s{4, 5, 6, 1, 2, 3}
encoded, err := binary.Marshal(&v)

// Unmarshal the numbers
var o sorted.Int32s
err = binary.Unmarshal(encoded, &o)

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IntsCodecAs

func IntsCodecAs(sliceType reflect.Type, sizeOfInt int) binary.Codec

IntsCodecAs returns an int slice codec with the specified precision and type.

func UintsCodecAs

func UintsCodecAs(sliceType reflect.Type, sizeOfInt int) binary.Codec

UintsCodecAs returns an uint slice codec with the specified precision and type.

Types

type Int16s

type Int16s []int16

Int16s represents a slice serialized in an unsafe, non portable manner.

func (*Int16s) GetBinaryCodec

func (s *Int16s) GetBinaryCodec() binary.Codec

GetBinaryCodec retrieves a custom binary codec.

func (Int16s) Len

func (s Int16s) Len() int

func (Int16s) Less

func (s Int16s) Less(i, j int) bool

func (Int16s) Swap

func (s Int16s) Swap(i, j int)

type Int32s

type Int32s []int32

Int32s represents a slice serialized in an unsafe, non portable manner.

func (*Int32s) GetBinaryCodec

func (s *Int32s) GetBinaryCodec() binary.Codec

GetBinaryCodec retrieves a custom binary codec.

func (Int32s) Len

func (s Int32s) Len() int

func (Int32s) Less

func (s Int32s) Less(i, j int) bool

func (Int32s) Swap

func (s Int32s) Swap(i, j int)

type Int64s

type Int64s []int64

Int64s represents a slice serialized in an unsafe, non portable manner.

func (*Int64s) GetBinaryCodec

func (s *Int64s) GetBinaryCodec() binary.Codec

GetBinaryCodec retrieves a custom binary codec.

func (Int64s) Len

func (s Int64s) Len() int

func (Int64s) Less

func (s Int64s) Less(i, j int) bool

func (Int64s) Swap

func (s Int64s) Swap(i, j int)

type TimeCounters

type TimeCounters struct {
	Time []uint64 // Sorted timestamps compressed using delta-encoding
	Data []uint64 // Corresponding uint64 values
}

TimeCounters represents a compressed time-series data where the value is itself an unsigned integer. This is particularly useful for counters.

func (*TimeCounters) Append

func (ts *TimeCounters) Append(time, value uint64)

Append appends a new value into the time series.

func (*TimeCounters) GetBinaryCodec

func (ts *TimeCounters) GetBinaryCodec() binary.Codec

GetBinaryCodec retrieves a custom binary codec.

func (*TimeCounters) Len

func (ts *TimeCounters) Len() int

Len returns the length of the time-series

func (*TimeCounters) Less

func (ts *TimeCounters) Less(i, j int) bool

Less compares two elements of the time series

func (*TimeCounters) Swap

func (ts *TimeCounters) Swap(i, j int)

Swap swaps two elements of the time series

type TimeSeries

type TimeSeries struct {
	Time []uint64  // Sorted timestamps compressed using delta-encoding
	Data []float64 // Corresponding float-64 values
}

TimeSeries represents a compressed time-series data. The implementation is based on Gorilla paper (https://www.vldb.org/pvldb/vol8/p1816-teller.pdf), but instead of bit-weaving it is byte-aligned. If you are using this, consider using snappy compression on the output, as it will give a significantly better compression than simply marshaling the time-series using this binary encoder.

func (*TimeSeries) Append

func (ts *TimeSeries) Append(time uint64, value float64)

Append appends a new value into the time series.

func (*TimeSeries) GetBinaryCodec

func (ts *TimeSeries) GetBinaryCodec() binary.Codec

GetBinaryCodec retrieves a custom binary codec.

func (*TimeSeries) Len

func (ts *TimeSeries) Len() int

Len returns the length of the time-series

func (*TimeSeries) Less

func (ts *TimeSeries) Less(i, j int) bool

Less compares two elements of the time series

func (*TimeSeries) Swap

func (ts *TimeSeries) Swap(i, j int)

Swap swaps two elements of the time series

type Timestamps

type Timestamps []uint64

Timestamps represents the slice of sorted timestamps

func (*Timestamps) GetBinaryCodec

func (ts *Timestamps) GetBinaryCodec() binary.Codec

GetBinaryCodec retrieves a custom binary codec.

type Uint16s

type Uint16s []uint16

Uint16s represents a slice serialized in an unsafe, non portable manner.

func (*Uint16s) GetBinaryCodec

func (s *Uint16s) GetBinaryCodec() binary.Codec

GetBinaryCodec retrieves a custom binary codec.

func (Uint16s) Len

func (s Uint16s) Len() int

func (Uint16s) Less

func (s Uint16s) Less(i, j int) bool

func (Uint16s) Swap

func (s Uint16s) Swap(i, j int)

type Uint32s

type Uint32s []uint32

Uint32s represents a slice serialized in an unsafe, non portable manner.

func (*Uint32s) GetBinaryCodec

func (s *Uint32s) GetBinaryCodec() binary.Codec

GetBinaryCodec retrieves a custom binary codec.

func (Uint32s) Len

func (s Uint32s) Len() int

func (Uint32s) Less

func (s Uint32s) Less(i, j int) bool

func (Uint32s) Swap

func (s Uint32s) Swap(i, j int)

type Uint64s

type Uint64s []uint64

Uint64s represents a slice serialized in an unsafe, non portable manner.

func (*Uint64s) GetBinaryCodec

func (s *Uint64s) GetBinaryCodec() binary.Codec

GetBinaryCodec retrieves a custom binary codec.

func (Uint64s) Len

func (s Uint64s) Len() int

func (Uint64s) Less

func (s Uint64s) Less(i, j int) bool

func (Uint64s) Swap

func (s Uint64s) Swap(i, j int)

Jump to

Keyboard shortcuts

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