Skip to content

[Pack] List of Feasible Candidates Should be a Priority Queue #2859

Closed
@AlexandreSinger

Description

@AlexandreSinger

In the GreedyCandidateSelector class, used within the packer, a list of feasible blocks is maintained which is used to select the next candidate to propose:

/// @brief Array of feasible blocks to select from [0..max_array_size-1]
///
/// Sorted in ascending gain order so that the last cluster_ctx.blocks is
/// the most desirable (this makes it easy to pop blocks off the list.
std::vector<t_pack_molecule*> feasible_blocks;
int num_feasible_blocks;

Currently this is stored as a vector where it is ordered based on the gain of the block. To maintain the order, an insertion sort is used every time a block is added to the list. Not only is this code confusing to read, it may also be slow. This should instead be an std::priority_queue.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions