Skip to content

revert: revert #4258 except those for Biome - #4261

Closed
ybw0014 wants to merge 2 commits into
Slimefun:walshy/mc-1.21from
ybw0014:revert/all-enum-map-removal
Closed

ybw0014 wants to merge 2 commits into
Slimefun:walshy/mc-1.21from
ybw0014:revert/all-enum-map-removal

Conversation

@ybw0014

@ybw0014 ybw0014 commented Nov 12, 2024 •

Copy link
Copy Markdown
Contributor

Description

#4258 changed all EnumMap/EnumSet usages to HashMap/HashSet. EnumMap/EnumSet is optimized for enums, and changing them for those that are still enums may cause worse performance issues.

Keep those EnumMap/EnumSet until their keys are no longer enums.

Proposed changes

Reverted #4258.
Changed the EnumMap/EnumSet for Biome as key.

Related Issues (if applicable)

Checklist

  • I have fully tested the proposed changes and promise that they will not break everything into chaos.
  • I have also tested the proposed changes in combination with various popular addons and can confirm my changes do not break them.
  • I have made sure that the proposed changes do not break compatibility across the supported Minecraft versions (1.16.* - 1.20.*).
  • I followed the existing code standards and didn't mess up the formatting.
  • I did my best to add documentation to any public classes or methods I added.
  • I have added Nonnull and Nullable annotations to my methods to indicate their behaviour for null values
  • I added sufficient Unit Tests to cover my code.

@ybw0014
ybw0014 requested a review from a team as a code owner November 12, 2024 07:08
@github-actions

Copy link
Copy Markdown
Contributor

Pro Tip!
You can help us label your Pull Requests by using the following branch naming convention next time you create a pull request. ❤️

Branch naming convention Label
feature/** 🎈 Feature
fix/** ✨ Fix
chore/** 🧹 Chores
api/** 🔧 API
performance/** 💡 Performance Optimization
compatibility/** 🤝 Compatibility

If your changes do not fall into any of these categories, don't worry. You can just ignore this message in that case! 👀

@github-actions

Copy link
Copy Markdown
Contributor

Slimefun preview build

A Slimefun preview build is available for testing!
Commit: a0c52ce

https://preview-builds.walshy.dev/download/Slimefun/4261/a0c52cec

Note: This is not a supported build and is only here for the purposes of testing.
Do not run this on a live server and do not report bugs anywhere but this PR!

@JustAHuman-xD

Copy link
Copy Markdown
Contributor

Is the performance regression that bad? The point behind switching was that way it doesn't break once they are no longer enums, which could be any update now with all of the breaking changes.

@ybw0014

ybw0014 commented Nov 16, 2024

Copy link
Copy Markdown
Contributor Author

https://docs.oracle.com/javase/7/docs/api/java/util/EnumMap.html

Enum maps are represented internally as arrays. This representation is extremely compact and efficient.
Implementation note: All basic operations execute in constant time. They are likely (though not guaranteed) to be faster than their HashMap counterparts.

@md5sha256

md5sha256 commented Nov 16, 2024 •

Copy link
Copy Markdown
Contributor

I'm not in favour for this unless there is a clear and obvious performance observed performance regression. Just because its theoretically slower does not mean its too slow to accept practically. Would like to see some benchmarks.

@JustAHuman-xD

Copy link
Copy Markdown
Contributor

I'm not in favour for this unless there is a clear and obvious performance observed performance regression. Just because its theoretically slower does not mean its too slow to accept practically. Would like to see some benchmarks.

Same here

@ybw0014 ybw0014 closed this Nov 17, 2024
@ybw0014
ybw0014 deleted the revert/all-enum-map-removal branch March 28, 2025 19:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants