txindexer: Refactor Tx Search Aggregation (#3851)
- Replace the previous intersect call, which was called at each query condition, with a map intersection.
- Replace fmt.Sprintf with string()
closes: #3076
Benchmarks
```
Old
goos: darwin
goarch: amd64
pkg: github.com/tendermint/tendermint/state/txindex/kv
BenchmarkTxSearch-4 200 103641206 ns/op 7998416 B/op 71171 allocs/op
PASS
ok github.com/tendermint/tendermint/state/txindex/kv 26.019s
New
goos: darwin
goarch: amd64
pkg: github.com/tendermint/tendermint/state/txindex/kv
BenchmarkTxSearch-4 1000 38615024 ns/op 13515226 B/op 166460 allocs/op
PASS
ok github.com/tendermint/tendermint/state/txindex/kv 53.618s
```
~62% performance improvement
Commits:
* Refactor tx search
* Add pending changelog entry
* Add tx search benchmarking
* remove intermediate hashes list
also reset timer in BenchmarkTxSearch
and fix other benchmark
* fix import
* Add test cases
* Fix searching
* Replace fmt.Sprintf with string
* Update state/txindex/kv/kv.go
Co-Authored-By: Anton Kaliaev <anton.kalyaev@gmail.com>
* Rename params
* Cleanup
* Check error in benchmarks