Skip to content
New issue

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

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

Already on GitHub? # to your account

Use HashSet for error deduplication #6268

Merged
merged 10 commits into from
Jul 16, 2024
Merged

Conversation

ylmin
Copy link
Contributor

@ylmin ylmin commented Jul 14, 2024

Description

Optimization Explanation

  • Using HashSet to track seen elements simplifies the code logic.
  • Using the retain method directly filters out duplicate elements in place, avoiding the complexity of manually managing indices and swapping elements.
  • The code is more concise and readable while maintaining the original order.
  • Time complexity comparison: Original code: Due to the need to manually manage indices and swap elements, the time -complexity is O(n^2) (in the worst case). Optimized code: Using HashSet and the retain method, the time complexity is O(n).
  • Space complexity comparison: Original code: Requires additional HashMap and SmallVec to store hash values and indices. Optimized code: Only requires a HashSet to store seen elements.

Checklist

  • I have linked to any relevant issues.
  • I have commented my code, particularly in hard-to-understand areas.
  • I have updated the documentation where relevant (API docs, the reference, and the Sway book).
  • I have added tests that prove my fix is effective or that my feature works.
  • I have added (or requested a maintainer to add) the necessary Breaking* or New Feature labels where relevant.
  • I have done my best to ensure that my PR adheres to the Fuel Labs Code Review Standards.
  • I have requested a review from the relevant team or maintainers.

@ylmin ylmin requested a review from a team as a code owner July 14, 2024 06:15
Copy link
Contributor

@IGI-111 IGI-111 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clever.

@IGI-111 IGI-111 requested a review from a team July 16, 2024 10:28
@IGI-111 IGI-111 changed the title Small code refactor Use HashSet for error deduplication Jul 16, 2024
@JoshuaBatty JoshuaBatty merged commit 807d7f4 into FuelLabs:master Jul 16, 2024
38 checks passed
esdrubal pushed a commit that referenced this pull request Aug 13, 2024
## Description
Optimization Explanation
- Using HashSet to track seen elements simplifies the code logic.
- Using the retain method directly filters out duplicate elements in
place, avoiding the complexity of manually managing indices and swapping
elements.
- The code is more concise and readable while maintaining the original
order.
- Time complexity comparison: Original code: Due to the need to manually
manage indices and swap elements, the time -complexity is O(n^2) (in the
worst case). Optimized code: Using HashSet and the retain method, the
time complexity is O(n).
- Space complexity comparison: Original code: Requires additional
HashMap and SmallVec to store hash values and indices. Optimized code:
Only requires a HashSet to store seen elements.

## Checklist

- [ ] I have linked to any relevant issues.
- [ ] I have commented my code, particularly in hard-to-understand
areas.
- [ ] I have updated the documentation where relevant (API docs, the
reference, and the Sway book).
- [ ] If my change requires substantial documentation changes, I have
[requested support from the DevRel
team](https://github.com/FuelLabs/devrel-requests/issues/new/choose)
- [ ] I have added tests that prove my fix is effective or that my
feature works.
- [ ] I have added (or requested a maintainer to add) the necessary
`Breaking*` or `New Feature` labels where relevant.
- [x] I have done my best to ensure that my PR adheres to [the Fuel Labs
Code Review
Standards](https://github.com/FuelLabs/rfcs/blob/master/text/code-standards/external-contributors.md).
- [x] I have requested a review from the relevant team or maintainers.

---------

Co-authored-by: IGI-111 <igi-111@protonmail.com>
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants