Skip to content

Commit e71e07e

Browse files
committed
Don't compute degrees_dist2 if not needed
1 parent 2f3c24b commit e71e07e

1 file changed

Lines changed: 18 additions & 20 deletions

File tree

src/order.jl

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ function rotate_bucket_right!(db::DegreeBuckets, d::Integer)
273273
return nothing
274274
end
275275

276-
function update_bucket!(db::DegreeBuckets, v::Integer; degtype, direction)
276+
function update_bucket!(db::DegreeBuckets, v::Integer; degtype::Symbol, direction::Symbol)
277277
(; degrees, bucket_storage, bucket_low, bucket_high, positions, reproduce_colpack) = db
278278
d, p = degrees[v], positions[v]
279279
low, high = bucket_low[d + 1], bucket_high[d + 1]
@@ -362,34 +362,32 @@ function vertices(
362362
g::BipartiteGraph{T}, ::Val{side}, order::DynamicDegreeBasedOrder{degtype,direction}
363363
) where {T<:Integer,side,degtype,direction}
364364
other_side = 3 - side
365-
# compute dist-2 degrees in an optimized way
366365
n = nb_vertices(g, Val(side))
367366
degrees_dist2 = zeros(T, n)
368367
visited = fill(false, n)
369368
vertices_visited = zeros(T, n-1)
370369
num_visited = zero(T)
371-
for v in vertices(g, Val(side))
372-
for w1 in neighbors(g, Val(side), v)
373-
for w2 in neighbors(g, Val(other_side), w1)
374-
if w2 != v && !visited[w2]
375-
degrees_dist2[v] += 1
376-
visited[w2] = true
377-
num_visited += 1
378-
vertices_visited[num_visited] = w2
370+
# compute dist-2 degrees in an optimized way (if needed)
371+
if degree_increasing(; degtype, direction)
372+
for v in vertices(g, Val(side))
373+
for w1 in neighbors(g, Val(side), v)
374+
for w2 in neighbors(g, Val(other_side), w1)
375+
if w2 != v && !visited[w2]
376+
degrees_dist2[v] += 1
377+
visited[w2] = true
378+
num_visited += 1
379+
vertices_visited[num_visited] = w2
380+
end
379381
end
380382
end
383+
for k in 1:num_visited
384+
z = vertices_visited[k]
385+
visited[z] = false
386+
end
387+
num_visited = 0
381388
end
382-
for k in 1:num_visited
383-
z = vertices_visited[k]
384-
visited[z] = false
385-
end
386-
num_visited = 0
387-
end
388-
if degree_increasing(; degtype, direction)
389-
degrees = zeros(T, n)
390-
else
391-
degrees = degrees_dist2
392389
end
390+
degrees = degrees_dist2
393391
maxd2 = maximum(degrees_dist2)
394392
db = DegreeBuckets(T, degrees, maxd2; reproduce_colpack=order.reproduce_colpack)
395393
π = T[]

0 commit comments

Comments
 (0)