Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Performance improvements #24

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Performance improvements #24

wants to merge 1 commit into from

Commits on Oct 12, 2022

  1. prevent run-time dispatch in roots(::AbstractVector)

    findlast does not necessarily return an Integer, it may also return
    Nothing, depending on the value of its arguments.
    
    The latter case needs to be handled to prevent run-time dispatch for
    the slicing operation.
    
    Additionally, the truncated coefficients slice is now a view
    instead of a copy. This should make things slightly more performant,
    apart from making the code simpler.
    
    JET warnings before this commit:
    
    ```
    julia> @report_opt PolynomialRoots.roots(rand(5))
    ═════ 1 possible error found ═════
    ┌ @ /home/nsajko/.julia/packages/PolynomialRoots/1iZQh/src/PolynomialRoots.jl:610 PolynomialRoots.:(var"#roots#2")(PolynomialRoots.NaN, false, #self#, poly)
    │┌ @ /home/nsajko/.julia/packages/PolynomialRoots/1iZQh/src/PolynomialRoots.jl:617 1 PolynomialRoots.:(:) %28
    ││ runtime dispatch detected: (1 PolynomialRoots.:(:) %28::Union{Nothing, Int64})::UnitRange{Int64}
    │└─────────────────────────────────────────────────────────────────────────────────
    ```
    
    After this commit:
    ```
    julia> using JET, PolynomialRoots
    
    julia> PolynomialRoots.roots(rand(5))
    4-element Vector{ComplexF64}:
       -31.46526111710419 - 1.6981590262940853e-16im
     -0.13020601478750077 - 0.8162149121849699im
     -0.13020601478750077 + 0.81621491218497im
     -0.48806837350069937 + 2.350988701644575e-38im
    
    julia> @report_opt PolynomialRoots.roots(rand(5))
    No errors detected
    ```
    nsajko committed Oct 12, 2022
    Configuration menu
    Copy the full SHA
    de52131 View commit details
    Browse the repository at this point in the history