Profiling on beta2


#1

My boundary element assembly code is two times slower on 0.7-beta2 than on 0.6.4. Execution hangs when I try to @profile the relevant method. CPU usage in task manager is negligible. It this a know problem in the beta release?


#2

That’s a pretty vague issue. Can you be a little more specific?


#3

Yes.

This code becomes between a factor 40 and 100 slower moving from 0.6.4 to 0.7:

using StaticArrays

u = @SVector [1.0, 0.0, 0.0]
v = @SVector [0.0, 1.0, 0.0]

function _normals(tangents, ::Type{Val{1}})
    PT = eltype(tangents)
    D  = length(tangents)
    T  = eltype(PT)

    n = zeros(T,D+1)
    b = Array{T}(D,D)

    for i in 1:D+1
        fill!(b, zero(T))
        for j in 1:D
            for k in 1:i-1
                b[k,j] = tangents[j][k]
            end
            for k in i:D
                b[k,j] = tangents[j][k+1]
            end
        end
        n[i] = (-1)^(i-1) * det(b)
    end

    n *= (-1)^D / norm(n)
    normals = SVector{1,PT}([PT(n)])

    metric = T[dot(tangents[i], tangents[j]) for i in 1:D, j in 1:D]
    volume = sqrt(abs(det(metric))) /  D

    return normals, volume

end

ts = @SVector [u,v]

_normals(ts, Val{1})
@time _normals(ts, Val{1})

#4

Have you tried fixing the deprecation warnings? If you do using StaticArrays, LinearAlgebra and change Array{T}(D,D) to Array{T}(undef,D,D) it takes 20 milliseconds on my system.


#5

That fixed it. Thank you.