Skip to content

Commit 25e73bf

Browse files
committed
Preallocate vectors
1 parent e7567f5 commit 25e73bf

File tree

1 file changed

+25
-8
lines changed

1 file changed

+25
-8
lines changed

src/strength.jl

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@ struct Classical{T} <: Strength
44
end
55
Classical(;θ = 0.25) = Classical(θ)
66

7-
function strength_of_connection{T}(c::Classical{T}, A::SparseMatrixCSC)
7+
function strength_of_connection{T, Ti, Tv}(c::Classical{T}, A::SparseMatrixCSC{Tv, Ti})
88

99
θ = c.θ
10-
I = Int[]
11-
J = Int[]
12-
V = Float64[]
10+
#I = Int[]
11+
#J = Int[]
12+
#V = Float64[]
1313

1414
m, n = size(A)
15+
nz = nnz(A)
16+
I = zeros(Ti, nz)
17+
J = zeros(Ti, nz)
18+
V = zeros(float(Tv), nz)
19+
k = 1
1520

1621
for i = 1:n
1722
neighbors = A[:,i]
@@ -22,19 +27,31 @@ function strength_of_connection{T}(c::Classical{T}, A::SparseMatrixCSC)
2227
val = A.nzval[j]
2328
if abs(val) >= threshold
2429
if row != i
25-
push!(I, row)
30+
#=push!(I, row)
2631
push!(J, i)
27-
push!(V, abs(val))
32+
push!(V, abs(val))=#
33+
I[k] = row
34+
J[k] = i
35+
V[k] = abs(val)
36+
k += 1
2837
end
2938
end
3039

3140
if row == i
32-
push!(I, row)
41+
#=push!(I, row)
3342
push!(J, i)
34-
push!(V, val)
43+
push!(V, val)=#
44+
I[k] = row
45+
J[k] = i
46+
V[k] = val
47+
k += 1
3548
end
3649
end
3750
end
51+
deleteat!(I, k:nz)
52+
deleteat!(J, k:nz)
53+
deleteat!(V, k:nz)
54+
3855
S = sparse(I, J, V, m, n)
3956

4057
scale_cols_by_largest_entry!(S)

0 commit comments

Comments
 (0)