use hex instead of fmt.Sprinf
add benchmark test
add benchmark in ci