Skip to content

perf: Reuse queue allocation in maximum_matching main loop#817

Merged
starovoid merged 1 commit intomasterfrom
max-mat-queue
Jun 4, 2025
Merged

perf: Reuse queue allocation in maximum_matching main loop#817
starovoid merged 1 commit intomasterfrom
max-mat-queue

Conversation

@starovoid
Copy link
Collaborator

A minor change that reduces the number of allocations in maximum_matching main loop and slightly improves performance.

Before:

test maximum_matching_bigger    ... bench:       1,044.74 ns/iter (+/- 8.21)
test maximum_matching_bipartite ... bench:         250.49 ns/iter (+/- 4.48)
test maximum_matching_full      ... bench:         129.69 ns/iter (+/- 1.10)
test maximum_matching_huge      ... bench:     847,857.70 ns/iter (+/- 25,993.22)

After:

test maximum_matching_bigger    ... bench:         984.27 ns/iter (+/- 31.05)
test maximum_matching_bipartite ... bench:         235.41 ns/iter (+/- 4.40)
test maximum_matching_full      ... bench:         130.42 ns/iter (+/- 1.04)
test maximum_matching_huge      ... bench:     798,815.20 ns/iter (+/- 12,723.48)

@starovoid starovoid added this to the 0.8.2 milestone Jun 4, 2025
@starovoid starovoid added the C-performance Category: A change motivated by improving speed, memory usage or compile times label Jun 4, 2025
@starovoid starovoid added this pull request to the merge queue Jun 4, 2025
Merged via the queue into master with commit 5fdd192 Jun 4, 2025
10 checks passed
@starovoid starovoid deleted the max-mat-queue branch June 4, 2025 17:53
@github-actions github-actions bot mentioned this pull request Jun 4, 2025
github-merge-queue bot pushed a commit that referenced this pull request Jun 6, 2025
## 🤖 New release

* `petgraph`: 0.8.1 -> 0.8.2 (✓ API compatible changes)

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

##
[0.8.2](https://github.com/petgraph/petgraph/compare/[email protected]@v0.8.2)
- 2025-06-06

### Bug Fixes

- Ford Fulkerson sometimes Panics on StableGraphs
([#793](#793))
- Run Maximal Cliques Quickcheck only on Digraphs which are symmetrical
([#800](#800))
- Run Steiner Tree Quickcheck on the connected components to properly
support disconnected graphs
([#801](#801))
- Quickcheck random01 function only outputs 0
([#798](#798))

### Documentation

- Specify that Acyclic::try_udpate_edge may add an edge
([#770](#770))
- Update remove_node doc comment in graphmap.rs
([#663](#663))
- Add examples to minimum spanning tree functions
([#808](#808))
- Minimal typo fix in comments
([#803](#803))
- Update docs.rs ([#807](#807))
- Add note about `StableGraph::edge_indices` behaviour
([#812](#812))
- Clarification of references to nodes and V (refresh #358)
([#814](#814))
- Fix link and mention Dfs and Bfs as special case in examples
([#816](#816))
- Unify algo docs
([#815](#815))

### New Features

- *(parser)* allow parsing graphs from Dot/Graphviz files
([#653](#653))
- Implement `DataMap` for `GraphMap` graphs
([#776](#776))
- Add Johnson's algorithm
([#741](#741))
- Add algorithm to find bridge edges
([#590](#590))

### Performance

- Reuse queue allocation in `maximum_matching` main loop
([#817](#817))

### Refactor

- Fix new clippy warnings
([#791](#791))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: starovoid <[email protected]>
RaoulLuque pushed a commit to RaoulLuque/petgraph that referenced this pull request Jun 18, 2025
…h#817)

A minor change that reduces the number of allocations in
`maximum_matching` main loop and slightly improves performance.

Before:
```
test maximum_matching_bigger    ... bench:       1,044.74 ns/iter (+/- 8.21)
test maximum_matching_bipartite ... bench:         250.49 ns/iter (+/- 4.48)
test maximum_matching_full      ... bench:         129.69 ns/iter (+/- 1.10)
test maximum_matching_huge      ... bench:     847,857.70 ns/iter (+/- 25,993.22)
```

After:
```
test maximum_matching_bigger    ... bench:         984.27 ns/iter (+/- 31.05)
test maximum_matching_bipartite ... bench:         235.41 ns/iter (+/- 4.40)
test maximum_matching_full      ... bench:         130.42 ns/iter (+/- 1.04)
test maximum_matching_huge      ... bench:     798,815.20 ns/iter (+/- 12,723.48)
```
RaoulLuque pushed a commit to RaoulLuque/petgraph that referenced this pull request Jun 18, 2025
## 🤖 New release

* `petgraph`: 0.8.1 -> 0.8.2 (✓ API compatible changes)

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

##
[0.8.2](https://github.com/petgraph/petgraph/compare/[email protected]@v0.8.2)
- 2025-06-06

### Bug Fixes

- Ford Fulkerson sometimes Panics on StableGraphs
([petgraph#793](petgraph#793))
- Run Maximal Cliques Quickcheck only on Digraphs which are symmetrical
([petgraph#800](petgraph#800))
- Run Steiner Tree Quickcheck on the connected components to properly
support disconnected graphs
([petgraph#801](petgraph#801))
- Quickcheck random01 function only outputs 0
([petgraph#798](petgraph#798))

### Documentation

- Specify that Acyclic::try_udpate_edge may add an edge
([petgraph#770](petgraph#770))
- Update remove_node doc comment in graphmap.rs
([petgraph#663](petgraph#663))
- Add examples to minimum spanning tree functions
([petgraph#808](petgraph#808))
- Minimal typo fix in comments
([petgraph#803](petgraph#803))
- Update docs.rs ([petgraph#807](petgraph#807))
- Add note about `StableGraph::edge_indices` behaviour
([petgraph#812](petgraph#812))
- Clarification of references to nodes and V (refresh petgraph#358)
([petgraph#814](petgraph#814))
- Fix link and mention Dfs and Bfs as special case in examples
([petgraph#816](petgraph#816))
- Unify algo docs
([petgraph#815](petgraph#815))

### New Features

- *(parser)* allow parsing graphs from Dot/Graphviz files
([petgraph#653](petgraph#653))
- Implement `DataMap` for `GraphMap` graphs
([petgraph#776](petgraph#776))
- Add Johnson's algorithm
([petgraph#741](petgraph#741))
- Add algorithm to find bridge edges
([petgraph#590](petgraph#590))

### Performance

- Reuse queue allocation in `maximum_matching` main loop
([petgraph#817](petgraph#817))

### Refactor

- Fix new clippy warnings
([petgraph#791](petgraph#791))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: starovoid <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

C-performance Category: A change motivated by improving speed, memory usage or compile times

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant