Skip to content

Commit a402983

Browse files
authored
Less allocs in GraphsDFG ls and lsf (#1018)
Co-authored-by: Johannes Terblanche <[email protected]>
1 parent 861065c commit a402983

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

src/GraphsDFG/FactorGraphs/FactorGraphs.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,9 @@ function rem_vertex!(g::FactorGraph{T,V,F}, v::Integer) where {T,V,F}
150150
label = g.labels[v]
151151
delete!(g.variables, label)
152152
delete!(g.factors, label)
153+
154+
OrderedCollections.rehash!(g.variables)
155+
OrderedCollections.rehash!(g.factors)
153156

154157
if v != lastv
155158
g.labels[v] = g.labels[lastv] #lastSym

src/GraphsDFG/services/GraphsDFG.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ function deleteFactor!(dfg::GraphsDFG, label::Symbol; suppressGetFactor::Bool=fa
151151
error("Factor label '$(label)' does not exist in the factor graph")
152152
end
153153
factor = dfg.g.factors[label]
154-
variable = rem_vertex!(dfg.g, dfg.g.labels[label])
154+
rem_vertex!(dfg.g, dfg.g.labels[label])
155155
return factor
156156
end
157157

@@ -178,7 +178,7 @@ function listVariables(dfg::GraphsDFG, regexFilter::Union{Nothing, Regex}=nothin
178178
if length(tags) > 0
179179
return map(v -> v.label, getVariables(dfg, regexFilter, tags=tags, solvable=solvable))
180180
else
181-
variables = collect(keys(dfg.g.variables))
181+
variables = copy(dfg.g.variables.keys)
182182
regexFilter !== nothing && (variables = filter(v -> occursin(regexFilter, String(v)), variables))
183183
solvable != 0 && (variables = filter(vId -> _isSolvable(dfg, vId, solvable), variables))
184184
return variables::Vector{Symbol}
@@ -206,7 +206,7 @@ function listFactors(dfg::GraphsDFG, regexFilter::Union{Nothing, Regex}=nothing;
206206
if length(tags) > 0
207207
return map(v -> v.label, getFactors(dfg, regexFilter, tags=tags, solvable=solvable))
208208
end
209-
factors = collect(keys(dfg.g.factors))
209+
factors = copy(dfg.g.factors.keys)
210210
if regexFilter != nothing
211211
factors = filter(f -> occursin(regexFilter, String(f)), factors)
212212
end

0 commit comments

Comments
 (0)