Skip to content

Performance regression in vcat(::Vector, ::Number) in v1.9 #50831

Closed
@nickrobinson251

Description

@nickrobinson251

Seems to be fixed in v1.10

v1.8

julia> VERSION
v"1.8.4"

julia> v = collect(Any, 1:1000);

julia> i = 1;

julia> using BenchmarkTools

julia> @btime vcat($v, $i);
  515.272 ns (1 allocation: 8.00 KiB)

julia> @which vcat(v, i)
vcat(A::Union{Number, LinearAlgebra.AbstractTriangular{T, A} where {T, A<:(Matrix)}, LinearAlgebra.Adjoint{<:Any, <:Vector}, LinearAlgebra.Bidiagonal, LinearAlgebra.Diagonal, LinearAlgebra.Hermitian{T, A} where {T, A<:(Matrix)}, LinearAlgebra.SymTridiagonal, LinearAlgebra.Symmetric{T, A} where {T, A<:(Matrix)}, LinearAlgebra.Transpose{<:Any, <:Vector}, LinearAlgebra.Tridiagonal, Matrix, Vector}...) in LinearAlgebra at /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/LinearAlgebra/src/special.jl:419

v1.9

julia> VERSION
v"1.9.2"

julia> v = collect(Any, 1:1000);

julia> i = 1;

julia> using BenchmarkTools

julia> @btime vcat($v, $i);
  1.050 μs (13 allocations: 8.28 KiB)

julia> @which vcat(v, i)
vcat(A::Union{Number, Matrix, Vector}...)
     @ Base array.jl:1957

v1.10

julia> VERSION
v"1.10.0-beta1"

julia> v = collect(Any, 1:1000);

julia> i = 1;

julia> using BenchmarkTools

julia> @btime vcat($v, $i);
  521.382 ns (1 allocation: 8.00 KiB)

julia> @which vcat(v, i)
vcat(A::Union{Number, AbstractArray}...)
     @ Base abstractarray.jl:1990

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions