Skip to content

[CUBVEC-165] Replace unordered_set with ankerl::unordered_dense::set#6840

Open
hgryoo wants to merge 4 commits intoCUBRID:cubvec/m1from
hgryoo:CUBVEC-165
Open

[CUBVEC-165] Replace unordered_set with ankerl::unordered_dense::set#6840
hgryoo wants to merge 4 commits intoCUBRID:cubvec/m1from
hgryoo:CUBVEC-165

Conversation

@hgryoo
Copy link
Member

@hgryoo hgryoo commented Feb 10, 2026

http://jira.cubrid.org/browse/CUBVEC-165

Purpose

During HNSW index construction on the nytimes-256-angular dataset, flamegraph analysis revealed a significant performance bottleneck in the std::unordered_set used to track visited nodes during neighbor traversal.
The overhead originates from frequent hash operations, poor cache locality, and allocator pressure in this hot path.

This PR aims to reduce the traversal overhead by replacing the STL hash set with a higher-performance alternative better library

Implementation

  • Added the ankerl hash container library to 3rdparty.
  • Replaced the std::unordered_set used for visited_nodes in HNSW neighbor exploration with ankerl::unordered_dense::set.

Remarks

N/A

@hgryoo hgryoo self-assigned this Feb 10, 2026
@hgryoo hgryoo requested a review from a team as a code owner February 10, 2026 11:31
@hgryoo hgryoo requested review from YeunjunLee, hornetmj, mhoh3963 and vimkim and removed request for a team February 10, 2026 11:31
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.

1 participant