cosmos-sdk/x
Dev Ojha 61dd71ed87
perf: Speedup to params simulation (#9481)
## Description

In Osmosis' simulation, we were observing that a large percent of the time was spent within SimulateParamChangeProposalContent, in particular within the composed key function. This is from a trace of our simulator running for 10 minutes:

<img width="931" alt="Screenshot 2021-06-08 at 2 32 28 PM" src="https://user-images.githubusercontent.com/6440154/121238788-16cdd000-c85e-11eb-8251-94537e69f8ce.png">

~This change lowers the number of calls to ComposedKey() by a factor of 3, and speeds up the underlying ComposedKey function. (sprintf is not particularly efficient for string concatenation, https://dev.to/pmalhaire/concatenate-strings-in-golang-a-quick-benchmark-4ahh ). After these change, the effect of ComposedKey() can no longer be seen in the profiler outputs.~

~This change does not change the result of the simulator on a given seed.~

See https://github.com/cosmos/cosmos-sdk/pull/9481#issuecomment-857119210 for description of changes.

---

### Author Checklist

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

- [x] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [x] added `!` to the type prefix if API or client breaking change
- [x] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting))
- [x] provided a link to the relevant issue or specification
- [x] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules)
- [x] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing)
- [x] added a changelog entry to `CHANGELOG.md`
- [x] included comments for [documenting Go code](https://blog.golang.org/godoc)
- [x] updated the relevant documentation or specification
- [x] reviewed "Files changed" and left comments if necessary
- [ ] confirmed all CI checks have passed

### Reviewers Checklist

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

- [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] confirmed `!` in the type prefix if API or client breaking change
- [ ] confirmed all author checklist items have been addressed 
- [ ] reviewed state machine logic
- [ ] reviewed API design and naming
- [ ] reviewed documentation is accurate
- [ ] reviewed tests and test coverage
- [ ] manually tested (if applicable)
2021-06-17 07:42:07 +00:00
..
auth refactor(client): add client/Context.Codec and deprecate JSONCodec (#9498) 2021-06-11 11:49:39 +00:00
authz refactor(client): add client/Context.Codec and deprecate JSONCodec (#9498) 2021-06-11 11:49:39 +00:00
bank refactor(client): add client/Context.Codec and deprecate JSONCodec (#9498) 2021-06-11 11:49:39 +00:00
capability codec: Rename codec and marshaler interfaces (#9226) 2021-04-29 10:46:22 +00:00
crisis refactor(client): add client/Context.Codec and deprecate JSONCodec (#9498) 2021-06-11 11:49:39 +00:00
distribution refactor(client): add client/Context.Codec and deprecate JSONCodec (#9498) 2021-06-11 11:49:39 +00:00
evidence refactor(client): add client/Context.Codec and deprecate JSONCodec (#9498) 2021-06-11 11:49:39 +00:00
feegrant refactor(client): add client/Context.Codec and deprecate JSONCodec (#9498) 2021-06-11 11:49:39 +00:00
genutil refactor(client): add client/Context.Codec and deprecate JSONCodec (#9498) 2021-06-11 11:49:39 +00:00
gov refactor(client): add client/Context.Codec and deprecate JSONCodec (#9498) 2021-06-11 11:49:39 +00:00
mint refactor(client): add client/Context.Codec and deprecate JSONCodec (#9498) 2021-06-11 11:49:39 +00:00
params perf: Speedup to params simulation (#9481) 2021-06-17 07:42:07 +00:00
simulation perf: Speedup to params simulation (#9481) 2021-06-17 07:42:07 +00:00
slashing refactor(client): add client/Context.Codec and deprecate JSONCodec (#9498) 2021-06-11 11:49:39 +00:00
staking revert: Turn staking power reduction into an on-chain param (#9495) 2021-06-14 14:45:15 +00:00
upgrade refactor(client): add client/Context.Codec and deprecate JSONCodec (#9498) 2021-06-11 11:49:39 +00:00
README.md chore: add markdownlint to lint commands (#9353) 2021-05-27 15:31:04 +00:00

List of Modules

Here are some production-grade modules that can be used in Cosmos SDK applications, along with their respective documentation:

  • Auth - Authentication of accounts and transactions for Cosmos SDK application.
  • Authz - Authorization for accounts to perform actions on behalf of other accounts.
  • Bank - Token transfer functionalities.
  • Capability - Object capability implementation.
  • Crisis - Halting the blockchain under certain circumstances (e.g. if an invariant is broken).
  • Distribution - Fee distribution, and staking token provision distribution.
  • Evidence - Evidence handling for double signing, misbehaviour, etc.
  • Governance - On-chain proposals and voting.
  • Mint - Creation of new units of staking token.
  • Params - Globally available parameter store.
  • Slashing - Validator punishment mechanisms.
  • Staking - Proof-of-Stake layer for public blockchains.
  • Upgrade - Software upgrades handling and coordination.

To learn more about the process of building modules, visit the building modules reference documentation.

IBC

The IBC module for the SDK has moved to its own repository.