Skip to content

Gate.io websocket client with optimized latency by leveraging object pool and fast json deserializer

License

Notifications You must be signed in to change notification settings

alexey-ernest/go-gate-websocket

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

go-gate-websocket

Gate.io websocket client with optimized latency by leveraging object pool and fast json deserializer

Optimized latency

Leveraging fast json deserializer and object pool for good base performance (i5 6-core): ~700 ns/op or ~1.4M op/s

$ go test --bench=. --benchtime 30s --benchmem

BenchmarkGateMessageHandling-6   	50664753	       707 ns/op	      72 B/op	       9 allocs/op

Example

import (
	. "github.com/alexey-ernest/go-gate-websocket"
	"log"
)

func main() {
	ws := NewGateWs()
	messages := make(chan *Depth, 10)
	err, _ := ws.SubscribeDepth("BTC_USDT", func (d *Depth) {
		messages <- d
	})

	if err != nil {
		log.Fatalf("failed to connect to gate websocket")
	}

	for m := range messages {
		log.Printf("%+v\n", m.RawDepth)
		m.DecrementReferenceCount() // return object back to the object pool
	}
}

About

Gate.io websocket client with optimized latency by leveraging object pool and fast json deserializer

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages