Go to file
Dev Ojha 744c85b8fa
perf: Improve the speed of coins.String() (#10076)
<!--
The default pull request template is for types feat, fix, or refactor.
For other templates, add one of the following parameters to the url:
- template=docs.md
- template=other.md
-->

## Description

Speedup coins.String() and coin.String()

In my local benchmarks, this >2x improves the time for balances with 1 coin, and further improves speed for strings with many balances. I did not benchmark on the two coin usecase

---

### 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 - n/a
- [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) - covered by existing
- [ ] added a changelog entry to `CHANGELOG.md`
- [x] included comments for [documenting Go code](https://blog.golang.org/godoc) - seems sufficiently clear
- [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-09-07 14:37:02 +00:00
.github build(deps): bump actions/setup-go from 2.1.3 to 2.1.4 (#10009) 2021-08-31 07:40:06 +00:00
baseapp refactor!: BaseApp {Check,Deliver}Tx with middleware design (#9920) 2021-08-25 14:40:33 +00:00
client fix!: Remove onlyAminoSigners in sequence check (#10029) 2021-08-30 22:15:21 +00:00
codec test: bring back Marshalling/unmarshalling of a wrapped tx test (#10044) 2021-09-01 13:55:16 +00:00
container feat: add low-level dependency injection container API (#9658) 2021-08-12 09:07:15 -04:00
contrib feat!: change Coin storage model (#9832) 2021-08-05 17:00:28 +00:00
cosmovisor feat: adding pre-upgrade command call in Cosmovisor (#10056) 2021-09-07 12:48:58 +05:30
crypto fix: hardcoded ledger algo on `keys add` (#9766) 2021-07-28 10:14:40 +00:00
db feat: ADR 040: Implement in-memory DB backend (#9952) 2021-08-31 08:09:37 +00:00
docs feat: adding pre-upgrade command call in Cosmovisor (#10056) 2021-09-07 12:48:58 +05:30
internal/conv internal/conv: fix wrong string to bytes implementation (#9141) 2021-04-19 14:51:05 +01:00
proto/cosmos docs: Fix GetNodeInfoResponse comment (#10052) 2021-09-02 08:23:30 +00:00
scripts chore: Add script to validate gentxs (#9486) 2021-07-27 09:37:29 +00:00
server refactor!: BaseApp {Check,Deliver}Tx with middleware design (#9920) 2021-08-25 14:40:33 +00:00
simapp fix: use keyring in config for add-genesis-account cmd (#9969) 2021-09-02 16:03:43 +00:00
snapshots snapshots: document use of ioutil.TempDir() (#8508) 2021-02-04 09:54:01 +00:00
std Add ADR 031 BaseApp and codec infrastructure (#7519) 2020-10-15 13:07:59 +00:00
store perf: Remove telemetry from wrappings of store (#10077) 2021-09-05 20:07:04 +00:00
telemetry v043 audit changes for telemetry/ (#9297) 2021-05-11 12:28:47 +00:00
tests test: fix mockgen version (#9127) 2021-05-25 09:18:59 +00:00
testutil refactor!: change GetSigners return type to []sdk.AccAddress (#9915) 2021-08-13 15:34:00 +00:00
third_party/proto Any: update and test String method (#8854) 2021-03-12 12:24:07 +00:00
types perf: Improve the speed of coins.String() (#10076) 2021-09-07 14:37:02 +00:00
version feat: add cosmos-sdk Version (#9429) 2021-06-18 12:56:55 +00:00
x feat: Make group module a standalone go module (#10059) 2021-09-03 09:14:53 +00:00
.build.sh fix library file path (#8301) 2021-01-12 10:08:42 +00:00
.clang-format Fix clang-format to specific version (#7350) 2020-10-27 10:04:34 +00:00
.codecov.yml CI: Fix codecov flag project config (#7994) 2020-11-20 09:13:25 -05:00
.deepsource.toml chore: refactor code quality issues (#8932) 2021-03-22 09:30:27 +00:00
.dockerignore Add basic Dockerfile to build all binaries and export gaiad 2018-04-10 12:39:47 +02:00
.gitattributes Merge PR #6426: Migrate API Server 2020-06-15 13:39:09 -04:00
.gitignore docs: fix cosmovisor quickstart (#9730) 2021-07-26 07:51:36 +00:00
.golangci.yml refactor: Rename x/{mod}/legacy to x/{mod}/migrations (#9628) 2021-07-05 14:55:51 +00:00
.goreleaser.yml ci: automate release post tag push (#6230) 2020-05-25 20:02:08 +02:00
.markdownlint.json chore: add markdownlint to lint commands (#9353) 2021-05-27 15:31:04 +00:00
.markdownlintignore chore: add markdownlint to lint commands (#9353) 2021-05-27 15:31:04 +00:00
.mergify.yml chore: Add mergify v0.43 backport (#9591) 2021-06-28 12:23:20 +02:00
CHANGELOG.md perf: Improve the speed of coins.String() (#10076) 2021-09-07 14:37:02 +00:00
CODE_OF_CONDUCT.md Update CODE_OF_CONDUCT.md (#7381) 2020-09-28 11:28:30 +02:00
CONTRIBUTING.md docs: update adr section of contributing (#9710) 2021-07-27 21:27:49 -07:00
Dockerfile build: Update Dockerfile (#9839) 2021-08-03 09:46:16 -04:00
LICENSE Add README.md to Basecoin; Update licenses 2018-01-28 18:17:19 -08:00
Makefile Fix missed renaming from containerProtoImage to protoImageName. (#10055) 2021-09-02 08:13:26 +00:00
README.md chore: add markdownlint to lint commands (#9353) 2021-05-27 15:31:04 +00:00
SECURITY.md chore: add markdownlint to lint commands (#9353) 2021-05-27 15:31:04 +00:00
STABLE_RELEASES.md chore: Update STABLE_RELEASES for 0.43 (#9931) 2021-08-16 09:10:50 -04:00
buf.yaml refactor: Bring back deprecated proto fields to `v1beta1` (#9534) 2021-06-23 13:03:33 +00:00
docker-compose.yml perf: Change localnet CIDR from /16 (65k addresses) to /25 (128 addresses) to reduce docker network conflicts (#9667) 2021-07-12 08:51:36 +00:00
go.mod fix: Ensure that we do not import multiple, conflicting tendermints (#10062) 2021-09-03 14:29:27 +00:00
go.sum fix: Ensure that we do not import multiple, conflicting tendermints (#10062) 2021-09-03 14:29:27 +00:00

README.md

Cosmos SDK

banner

The Cosmos-SDK is a framework for building blockchain applications in Golang. It is being used to build Gaia, the first implementation of the Cosmos Hub.

WARNING: The SDK has mostly stabilized, but we are still making some breaking changes.

Note: Requires Go 1.15+

Quick Start

To learn how the SDK works from a high-level perspective, go to the SDK Intro.

If you want to get started quickly and learn how to build on top of the SDK, please follow the SDK Application Tutorial. You can also fork the tutorial's repository to get started building your own Cosmos SDK application.

For more, please go to the Cosmos SDK Docs.

Cosmos Hub Mainnet

The Cosmos Hub application, gaia, has moved to its own repository. Go there to join the Cosmos Hub mainnet and more.

Interblockchain Communication (IBC)

The IBC module for the SDK has moved to its own repository. Go there to build and integrate with the IBC module.

Starport

If you are starting a new app or a new module you can use Starport to help you get started and speed up development. If you have any questions or find a bug, feel free to open an issue in the repo.

Disambiguation

This Cosmos-SDK project is not related to the React-Cosmos project (yet). Many thanks to Evan Coury and Ovidiu (@skidding) for this Github organization name. As per our agreement, this disambiguation notice will stay here.