Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(p/int256): Optimize
int256
with two's complement implementation (
#2846) # Description This PR optimizes the implementation of `int256` type. Key changes include: - Changed from storing sign and value separately in the Int256 struct to an implementation using two's complement method. - This reduces unnecessary operations and improves overall performance. ## Performance Result - Basic arithmetic operations (addition, subtraction, etc.): About 3x performance improvement (based on Go benchmarks, may differ slightly in gno) - Division operations: Up to 5x performance decrease compared to the previous implementation (can be improved by directly manipulating array fields, but not applied to avoid duplication with p/demo/uint256) ## Additional improvements: - Increased test coverage to 95%. **This change is expected to improve performance for most int256 operations. However, please note the performance degradation in division operations.** ## See Also #2750 (review) <details><summary>Contributors' checklist...</summary> - [X] Added new tests, or not needed, or not feasible - [ ] Provided an example (e.g. screenshot) to aid review or the PR is self-explanatory - [ ] Updated the official documentation or not needed - [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message was included in the description - [ ] Added references to related issues and PRs - [ ] Provided any useful hints for running manual tests - [ ] Added new benchmarks to [generated graphs](https://gnoland.github.io/benchmarks), if any. More info [here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md). </details> --------- Co-authored-by: Morgan <[email protected]>
- Loading branch information