Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace/rewrite fc::uint128 with boost::multiprecision for better performance #1660

Open
abitmore opened this issue Mar 18, 2019 · 1 comment

Comments

@abitmore
Copy link
Member

commented Mar 18, 2019

User Story

@pmconrad mentioned in #1083 (comment):

One conclusion I have drawn is that boost::multiprecision performs significantly better than fc::uint128

fc::uint128 is in the code for serialization. For better performance, we could avoid using it for routine computation, E.G.

fc::uint128 volume = current_supply.value + force_settled_volume.value;
volume *= options.maximum_force_settlement_volume;
volume /= GRAPHENE_100_PERCENT;
return volume.to_uint64();
}
and more (try search).

One potential approach is to rewrite fc::uint128 (perhaps with boost::multiprecision) so it will have both better performance and compatible serialization. Another approach would be modifying individual code, replace fc::uint128 with boost::multiprecision when possible.

This is a sub-task of #982.

Impacts
Describe which portion(s) of BitShares Core may be impacted by your request. Please tick at least one box.

  • API (the application programming interface)
  • Build (the build process or something prior to compiled code)
  • CLI (the command line wallet)
  • Deployment (the deployment process after building such as Docker, Travis, etc.)
  • DEX (the Decentralized EXchange, market engine, etc.)
  • P2P (the peer-to-peer network for transaction/block propagation)
  • Performance (system or user efficiency, etc.)
  • Protocol (the blockchain logic, consensus, validation, etc.)
  • Security (the security of system or user data, etc.)
  • UX (the User Experience)
  • Other (please add below)

Additional Context (optional)
Add any other context about your request here.

CORE TEAM TASK LIST

  • Evaluate / Prioritize Feature Request
  • Refine User Stories / Requirements
  • Define Test Cases
  • Design / Develop Solution
  • Perform QA/Testing
  • Update Documentation

@abitmore abitmore added this to the Future Feature Release milestone Mar 18, 2019

@abitmore abitmore added this to New -Awaiting Core Team Evaluation in Project Backlog via automation Mar 18, 2019

@pmconrad

This comment has been minimized.

Copy link
Contributor

commented Mar 19, 2019

Also part of #1584

@pmconrad pmconrad self-assigned this May 28, 2019

@pmconrad pmconrad removed this from New -Awaiting Core Team Evaluation in Project Backlog May 28, 2019

@pmconrad pmconrad added this to To do in Feature Release (3.2.0) via automation May 28, 2019

@pmconrad pmconrad moved this from To do to In development in Feature Release (3.2.0) Jun 4, 2019

@pmconrad pmconrad moved this from In development to In testing in Feature Release (3.2.0) Jun 11, 2019

@pmconrad pmconrad added this to To do in Feature Release (3.3.0) via automation Jun 21, 2019

@pmconrad pmconrad removed this from In testing in Feature Release (3.2.0) Jun 21, 2019

@pmconrad pmconrad moved this from To do to In testing in Feature Release (3.3.0) Jun 21, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.