Categorygithub.com/lanrenwo/lzsgo
repositorypackage
0.0.2
Repository: https://github.com/lanrenwo/lzsgo.git
Documentation: pkg.go.dev

# README

lzsgo

Go codecov

lzsgo, converts OpenConnect's LZS library, pure golang code, good performance.

Installation

go get github.com/lanrenwo/lzsgo

How to use

package main

import (
	"bytes"
	"fmt"
	"strings"

	"github.com/lanrenwo/lzsgo"
)

func main() {
	var (
		n   int
		err error
	)
	s := "hello world"
	src := []byte(strings.Repeat(s, 50))

	comprBuf := make([]byte, 2048)
	n, err = lzsgo.Compress(src, comprBuf)
	if err != nil {
		fmt.Printf("Compress failed: %s", err)
		return
	}

	unprBuf := make([]byte, 2048)
	n, err = lzsgo.Uncompress(comprBuf[:n], unprBuf)
	if err != nil {
		fmt.Printf("Uncompress failed: %s", err)
		return
	}

	if !bytes.Equal(src, unprBuf[:n]) {
		fmt.Printf("Compress and uncompress data not equal")
		return
	}

	fmt.Println("ok")
}

Benchmarks

cpu: Intel(R) Xeon(R) CPU E5-2603 v4 @ 1.70GHz

No.Lzsc (µs)Lz4 (µs)Lzsgo (µs)
116.25921.27137.199
216.50932.0226.146
316.46620.82236.489
416.47832.4326.209
516.22821.22637.17
616.41921.22526.805
711.44215.69318.748
818.10521.74175.763
916.37931.70326.084
1016.78721.00849.658
1117.97623.75742.22
1216.91621.49126.831
1316.45921.36326.833
1426.69921.25326.305
1516.32427.26526.789
1616.521.37826.557
1716.73921.26760.373
1813.80919.06222.715
1916.47321.60626.615
2016.62621.12826.788
2116.23321.18226.631
2216.26121.126.697
2316.48221.32126.77
2416.30621.28526.621
2529.92257.14645.37
2649.09645.149.116
2716.55121.65326.575
2816.79121.36827.13
2916.88820.99626.866
3016.78421.60626.873
3116.86921.18926.965
3216.44521.21226.727
3316.44321.2326.725
3416.23721.68826.429
3516.44821.0626.866
3610.63814.25117.47
3728.4821.25126.828
3810.60314.22817.373
3928.70121.12626.577
4016.14321.19642.042
4116.39321.15626.631
4213.66319.20622.521
4316.20921.30726.775
4416.54421.17826.739
4513.63218.83922.636
4628.58931.97845.615
4740.42837.66360.06
4832.28234.10548.15
AVG:18.7823.6531.75

Thanks

OpenConnect

goplus c2go