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

Faster bitwise-equal weld() implementation #1237

Merged
merged 8 commits into from
Jan 22, 2024
Merged

Conversation

donmccurdy
Copy link
Owner

@donmccurdy donmccurdy commented Jan 19, 2024

Provides an alternative weld() implementation based on Meshoptimizer's approach. When tolerance=0, we use a hashtable to find bitwise-equal vertices quickly. This is vastly faster than previous approaches, but comes without tolerance options. When tolerance is non-zero, weld() falls back on the older implementation. In v4.0, the new implementation will be the default.

Results

model before after
lovecraftian 1,232ms 149ms
plant_3 2,607ms 431ms
concessionaire 138ms 32ms
weld_problem 115ms 21ms

Context

Tasks

  • debug performance regression above. hash collisions maybe?
  • add benchmark

@donmccurdy donmccurdy added this to the v4.0 milestone Jan 19, 2024
@donmccurdy donmccurdy force-pushed the feat/weld-bitwise-hash branch from 690bd46 to a840fc5 Compare January 19, 2024 05:18
@donmccurdy
Copy link
Owner Author

donmccurdy commented Jan 19, 2024

Current dependencies on/for this PR:

This stack of pull requests is managed by Graphite.

@donmccurdy donmccurdy force-pushed the feat/weld-bitwise-hash branch from f402f22 to 6648982 Compare January 22, 2024 00:06
@donmccurdy donmccurdy merged commit 53df3b8 into main Jan 22, 2024
10 checks passed
@donmccurdy donmccurdy deleted the feat/weld-bitwise-hash branch January 22, 2024 00:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Improve performance of weld() function
1 participant