高性能的序列化和反序列化算法库xxxPack(未想好名称)
对比目前业界高性能库:
- encoding/gob
 - encoding/json
 - github.com/vmihailenco/msgpack/v5
 - labix.org/v2/mgo/bson
 - github.com/valyala/fastjson
 - github.com/json-iterator/go
 - 自研序列化算法
 
验证数据集合:
type Data struct {
    Name     string
    BirthDay time.Time
    Phone    string
    Siblings int
    Spouse   bool
    Money    float64
    ExInfo   interface{}
}
Benchmark Results
2023-02-09 Results with
Go 1.19.4MacPro Apple M2 8G macOS VenturaDarwin 192.168.1.7 22.2.0 Darwin Kernel Version 22.2.0: Fri Nov 11 02:06:26 PST 2022; root:xnu-8792.61.2~4/RELEASE_ARM64_T8112 arm64
环境下,数据:
goos: darwin
goarch: amd64
pkg: github.com/kubeservice-stack/serialization-benchmarks
cpu: VirtualApple @ 2.50GHz
Benchmark_Bson_Marshal-8         	 2272702	       499.2 ns/op	       110.0 B/serial	     376 B/op	      10 allocs/op
Benchmark_Bson_Unmarshal-8       	 1617357	       716.2 ns/op	       110.0 B/serial	     224 B/op	      19 allocs/op
Benchmark_FastJson_Marshal-8     	 4016576	       296.9 ns/op	       133.8 B/serial	     504 B/op	       6 allocs/op
Benchmark_FastJson_Unmarshal-8   	 1527366	       778.7 ns/op	       133.8 B/serial	    1704 B/op	       9 allocs/op
Benchmark_Gob_Marshal-8          	  467408	      2475 ns/op	       163.6 B/serial	    1616 B/op	      35 allocs/op
Benchmark_Gob_Unmarshal-8        	   95322	     12386 ns/op	       163.6 B/serial	    7688 B/op	     207 allocs/op
Benchmark_JsonIter_Marshal-8     	 1941692	       591.5 ns/op	       148.7 B/serial	     216 B/op	       3 allocs/op
Benchmark_JsonIter_Unmarshal-8   	 1307601	       871.8 ns/op	       148.7 B/serial	     359 B/op	      14 allocs/op
Benchmark_Json_Marshal-8         	 1406618	       850.8 ns/op	       148.6 B/serial	     208 B/op	       2 allocs/op
Benchmark_Json_Unmarshal-8       	  494430	      2153 ns/op	       148.6 B/serial	     399 B/op	       9 allocs/op
Benchmark_xxxPack_Marshal-8      	 3624224	       312.8 ns/op	       119.0 B/serial	     344 B/op	       6 allocs/op
Benchmark_xxxPack_Unmarshal-8    	 2070897	       574.7 ns/op	       119.0 B/serial	     112 B/op	       3 allocs/op
Benchmark_Msgpack_Marshal-8      	 2961548	       401.9 ns/op	        92.00 B/serial	     264 B/op	       4 allocs/op
Benchmark_Msgpack_Unmarshal-8    	 2209035	       536.9 ns/op	        92.00 B/serial	     160 B/op	       4 allocs/op
PASS
ok  	github.com/kubeservice-stack/serialization-benchmarks	23.928s
总结
- xxxPack 
一次序列化+一次反序列化,性能最优综合排第1 :574.7 ns/op + 312.8 ns/op = 887.5 ns/op - xxxPack 整体性能是 golang原生json库的 3.38倍* :(2153+850.8)/ 887.5 = 3.3845倍
 - xxxPack 每次申请操作平均内存申请大小(119B/serial)排 第3; xxxPack Unmarshal 内存申请最小(112 B/op)排第1
 - xxxPack Unmarshal 每次操作申请了内存次数 排第2; Marshal 排第4;
 
「如果这篇文章对你有用,请随意打赏」
FEATURED TAGS
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            agent
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            apiserver
                        
                        
                        
                        
                        
                            application
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            bandwidth-limit
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            cgo
                        
                        
                        
                        
                        
                            cgroupfs
                        
                        
                        
                        
                        
                            ci/cd
                        
                        
                        
                        
                        
                            client-go
                        
                        
                        
                        
                        
                            cloudnative
                        
                        
                        
                        
                        
                            cncf
                        
                        
                        
                        
                        
                            cni
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            community
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            container
                        
                        
                        
                        
                        
                            container-network-interface
                        
                        
                        
                        
                        
                            containerd
                        
                        
                        
                        
                        
                            controller
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            coredns
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            crd
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            cuda
                        
                        
                        
                        
                        
                            custom-controller
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            deployment
                        
                        
                        
                        
                        
                        
                        
                            device-plugin
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            docker
                        
                        
                        
                        
                        
                            docker-build
                        
                        
                        
                        
                        
                            docker-image
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            drop
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            ebpf
                        
                        
                        
                        
                        
                            ecology
                        
                        
                        
                        
                        
                            egress
                        
                        
                        
                        
                        
                            etcd
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            gitee
                        
                        
                        
                        
                        
                            github
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            gitlab
                        
                        
                        
                        
                        
                            golang
                        
                        
                        
                        
                        
                            governance
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            gpu
                        
                        
                        
                        
                        
                            gpu-device
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            hpa
                        
                        
                        
                        
                        
                            http2
                        
                        
                        
                        
                        
                        
                        
                            image
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            ingress
                        
                        
                        
                        
                        
                        
                        
                            iptables
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            jobs
                        
                        
                        
                        
                        
                            kata
                        
                        
                        
                        
                        
                        
                        
                            kata-runtime
                        
                        
                        
                        
                        
                        
                        
                            kernel
                        
                        
                        
                        
                        
                            kind
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            kubelet
                        
                        
                        
                        
                        
                            kubenetes
                        
                        
                        
                        
                        
                            kubernetes
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            library
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            linux-os
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            logging
                        
                        
                        
                        
                        
                            loki
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            metrics
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            monitor
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            namespace
                        
                        
                        
                        
                        
                            network
                        
                        
                        
                        
                        
                            network-troubleshooting
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            node
                        
                        
                        
                        
                        
                        
                        
                            nodeport
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            nvidai
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            ollama
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            pingmesh
                        
                        
                        
                        
                        
                        
                        
                            pod
                        
                        
                        
                        
                        
                        
                        
                            prestop
                        
                        
                        
                        
                        
                            prometheus
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            proxyless
                        
                        
                        
                        
                        
                        
                        
                            pvc
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            rollingupdate
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            schedule
                        
                        
                        
                        
                        
                            scheduler
                        
                        
                        
                        
                        
                        
                        
                            serverless
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            sglang
                        
                        
                        
                        
                        
                        
                        
                            sidecar
                        
                        
                        
                        
                        
                        
                        
                            sigtrem
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            systemd
                        
                        
                        
                        
                        
                        
                        
                            tensorrt-llm
                        
                        
                        
                        
                        
                        
                        
                            throttling
                        
                        
                        
                        
                        
                            timeout
                        
                        
                        
                        
                        
                            tools
                        
                        
                        
                        
                        
                            traceroute
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                            vllm