MarshalCache序列化反序列化缓存
GetMcKey() string
如果要序列化或者反序列化的对象没有这个实例方法,那么将无法应用缓存,而是直接调用对应的序列化反序列化方法。
mc.Marshal(obj) 只要满足GetMcKey接口的,那么获得Key,然后将序列化对象放入缓存
如果Unmarshal的对象满足GetMcKey接口,那么就将传入的bytes放入缓存。
以JSON序列化为例,使用MarshalCache后性能明显提高
BenchmarkMarshalCacheImpl_Marshal_Direct
BenchmarkMarshalCacheImpl_Marshal_Direct-8 3181 337121 ns/op
BenchmarkMarshalCacheImpl_Marshal_UseCache
BenchmarkMarshalCacheImpl_Marshal_UseCache-8 6956326 169 ns/op
BenchmarkMarshalCacheImpl_Marshal_NoCache
BenchmarkMarshalCacheImpl_Marshal_NoCache-8 3555 325300 ns/op