Skip to content

melias122/protoc-gen-go-equal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

protoc-gen-go-equal

protoc-gen-go-equal is a protobuf plugin that generates Equal methods

Installation

go get github.com/melias122/protoc-gen-go-equal@latest

Benchmark

proto.Equal vs generated Equal

name                                  old time/op    new time/op    delta
EqualWithSmallEmpty-16                   885ns ± 1%       3ns ±31%   -99.65%  (p=0.016 n=4+5)
EqualWithIdenticalPtrEmpty-16           7.96ns ±37%    2.51ns ±33%   -68.44%  (p=0.008 n=5+5)
EqualWithLargeEmpty-16                  8.10µs ±26%    0.48µs ±37%   -94.11%  (p=0.008 n=5+5)
EqualWithDeeplyNestedEqual-16            184µs ±23%       7µs ± 2%   -95.93%  (p=0.016 n=5+4)
EqualWithDeeplyNestedDifferent-16       58.8µs ± 4%     1.2µs ± 2%   -97.98%  (p=0.016 n=5+4)
EqualWithDeeplyNestedIdenticalPtr-16    5.07ns ± 5%    2.27ns ± 1%   -55.12%  (p=0.016 n=5+4)

name                                  old alloc/op   new alloc/op   delta
EqualWithSmallEmpty-16                   88.0B ± 0%      0.0B       -100.00%  (p=0.008 n=5+5)
EqualWithIdenticalPtrEmpty-16            0.00B          0.00B           ~     (all equal)
EqualWithLargeEmpty-16                   88.0B ± 0%      0.0B       -100.00%  (p=0.008 n=5+5)
EqualWithDeeplyNestedEqual-16           3.52kB ± 0%    0.00kB       -100.00%  (p=0.008 n=5+5)
EqualWithDeeplyNestedDifferent-16       2.58kB ± 0%    0.00kB       -100.00%  (p=0.008 n=5+5)
EqualWithDeeplyNestedIdenticalPtr-16     0.00B          0.00B           ~     (all equal)

name                                  old allocs/op  new allocs/op  delta
EqualWithSmallEmpty-16                    5.00 ± 0%      0.00       -100.00%  (p=0.008 n=5+5)
EqualWithIdenticalPtrEmpty-16             0.00           0.00           ~     (all equal)
EqualWithLargeEmpty-16                    5.00 ± 0%      0.00       -100.00%  (p=0.008 n=5+5)
EqualWithDeeplyNestedEqual-16              200 ± 0%         0       -100.00%  (p=0.008 n=5+5)
EqualWithDeeplyNestedDifferent-16          122 ± 0%         0       -100.00%  (p=0.008 n=5+5)
EqualWithDeeplyNestedIdenticalPtr-16      0.00           0.00           ~     (all equal)

Limitations

Use only when speed and efficiency is a concern, otherwise use proto.Equal. In some cases as e.g. some known types Equal will fallback to proto.Equal. Unknown fields and extensions are not supported.

About

protobuf plugin for generating go Equal methods

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published