Skip to content

Reduce invalidation count #272

@adrhill

Description

@adrhill

The julia-invalidations action has jumped from finding 81 to 960 method invalidations in #271, likely due to the switch from Julia 1.11 to 1.12.

New on 1.12

┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬──────────────────┬───────────────┬─────────────────┐
│ <file name>:<line number>                                                                                                         │  Function Name   │ Invalidations │ Invalidations % │
│                                                                                                                                   │                  │               │     (xᵢ/∑x)     │
├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────┼───────────────┼─────────────────┤
│ FillArrays/7ijZm/src/FillArrays.jl:704                                                                                            │       any        │      554      │      40.6       │
│ FillArrays/7ijZm/src/FillArrays.jl:579                                                                                            │     convert      │      255      │      18.69      │
│ /home/runner/work/SparseConnectivityTracer.jl/SparseConnectivityTracer.jl/src/overloads/hessian_tracer.jl:76                      │     identity     │      206      │      15.09      │
│ /home/runner/work/SparseConnectivityTracer.jl/SparseConnectivityTracer.jl/src/overloads/conversion.jl:24                          │   promote_rule   │      185      │     13.555      │
│ /home/runner/work/SparseConnectivityTracer.jl/SparseConnectivityTracer.jl/src/overloads/ifelse_global.jl:1                        │      ifelse      │      53       │      3.883      │
│ FillArrays/7ijZm/src/fillalgebra.jl:433                                                                                           │   reduce_first   │      40       │      2.93       │
│ FillArrays/7ijZm/src/FillArrays.jl:765                                                                                            │ print_matrix_row │      25       │      1.831      │
│ /home/runner/work/SparseConnectivityTracer.jl/SparseConnectivityTracer.jl/src/overloads/conversion.jl:31                          │     convert      │      19       │      1.392      │
│ FillArrays/7ijZm/src/FillArrays.jl:565                                                                                            │      Array       │      18       │      1.318      │
│ FillArrays/7ijZm/src/FillArrays.jl:726                                                                                            │        in        │       6       │     0.4395      │
│ /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/SparseArrays/src/sparsevector.jl:2292 │      sort!       │       2       │     0.1465      │
│ FillArrays/7ijZm/src/FillArrays.jl:259                                                                                            │      sort!       │       1       │     0.07324     │
│ /cache/build/builder-amdci4-0/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/SparseArrays/src/readonly.jl:23       │    eachindex     │       1       │     0.07324     │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────┴───────────────┴─────────────────┘

Without FillArrays and SparseArrays:

┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬──────────────────┬───────────────┬─────────────────┐
│ <file name>:<line number>                                                                                                         │  Function Name   │ Invalidations │ Invalidations % │
│                                                                                                                                   │                  │               │     (xᵢ/∑x)     │
├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────┼───────────────┼─────────────────┤
│ /home/runner/work/SparseConnectivityTracer.jl/SparseConnectivityTracer.jl/src/overloads/hessian_tracer.jl:76                      │     identity     │      206      │      15.09      │
│ /home/runner/work/SparseConnectivityTracer.jl/SparseConnectivityTracer.jl/src/overloads/conversion.jl:24                          │   promote_rule   │      185      │     13.555      │
│ /home/runner/work/SparseConnectivityTracer.jl/SparseConnectivityTracer.jl/src/overloads/ifelse_global.jl:1                        │      ifelse      │      53       │      3.883      │
│ /home/runner/work/SparseConnectivityTracer.jl/SparseConnectivityTracer.jl/src/overloads/conversion.jl:31                          │     convert      │      19       │      1.392      │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────┴───────────────┴─────────────────┘

Previously on 1.11

┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬──────────────────┬───────────────┬─────────────────┐
│ <file name>:<line number>                                                                                                     │  Function Name   │ Invalidations │ Invalidations % │
│                                                                                                                               │                  │               │     (xᵢ/∑x)     │
├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────┼───────────────┼─────────────────┤
│ /home/runner/work/SparseConnectivityTracer.jl/SparseConnectivityTracer.jl/src/overloads/hessian_tracer.jl:76                  │     identity     │      32       │      43.25      │
│ FillArrays/7ijZm/src/FillArrays.jl:765                                                                                        │ print_matrix_row │      25       │      33.78      │
│ /home/runner/work/SparseConnectivityTracer.jl/SparseConnectivityTracer.jl/src/overloads/conversion.jl:24                      │   promote_rule   │       8       │      10.81      │
│ /home/runner/work/SparseConnectivityTracer.jl/SparseConnectivityTracer.jl/src/overloads/conversion.jl:8                       │     convert      │       4       │      5.406      │
│ FillArrays/7ijZm/src/fillalgebra.jl:433                                                                                       │   reduce_first   │       3       │      4.055      │
│ /cache/build/builder-demeter6-3/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/SparseArrays/src/readonly.jl:17 │      eltype      │       2       │      2.703      │
│ /home/runner/work/SparseConnectivityTracer.jl/SparseConnectivityTracer.jl/src/overloads/ifelse_global.jl:1                    │      ifelse      │       0       │       0.0       │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────┴───────────────┴─────────────────┘

Without FillArrays and SparseArrays:

┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬──────────────────┬───────────────┬─────────────────┐
│ <file name>:<line number>                                                                                                     │  Function Name   │ Invalidations │ Invalidations % │
│                                                                                                                               │                  │               │     (xᵢ/∑x)     │
├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────┼───────────────┼─────────────────┤
│ /home/runner/work/SparseConnectivityTracer.jl/SparseConnectivityTracer.jl/src/overloads/hessian_tracer.jl:76                  │     identity     │      32       │      43.25      │
│ /home/runner/work/SparseConnectivityTracer.jl/SparseConnectivityTracer.jl/src/overloads/conversion.jl:24                      │   promote_rule   │       8       │      10.81      │
│ /home/runner/work/SparseConnectivityTracer.jl/SparseConnectivityTracer.jl/src/overloads/conversion.jl:8                       │     convert      │       4       │      5.406      │
│ /home/runner/work/SparseConnectivityTracer.jl/SparseConnectivityTracer.jl/src/overloads/ifelse_global.jl:1                    │      ifelse      │       0       │       0.0       │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────┴───────────────┴─────────────────┘

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    InvalidationsMethod invalidations that should be fixed.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions