Skip to content

Deleting a vector of constraints through bridges is slow #2071

@odow

Description

@odow

x-ref: https://discourse.julialang.org/t/jump-delete-is-slower-than-building-a-new-model/92597

julia> using JuMP

julia> import HiGHS

julia> import Gurobi

julia> function main(optimizer, flag; bridges)
           x_min = rand(100,100)
           m = Model(optimizer; add_bridges = bridges)
           set_silent(m)
           @variable(m, x[1:100, 1:100])
           @constraint(m, x_min_con, x .>= x_min)
           @objective(m, Min, sum(x))
           optimize!(m)
           if flag
               @time delete(m, vec(x_min_con))
           else
               @time delete.(m, x_min_con)
           end
           return
       end
main (generic function with 1 method)

julia> main(Gurobi.Optimizer, true; bridges = true)
  1.274187 seconds (138.19 k allocations: 3.311 MiB)

julia> main(Gurobi.Optimizer, false; bridges = true)
  1.313978 seconds (148.71 k allocations: 3.319 MiB)

julia> main(HiGHS.Optimizer, true; bridges = true)
  2.356010 seconds (175.15 k allocations: 1.362 GiB, 9.78% gc time)

julia> main(HiGHS.Optimizer, false; bridges = true)
  2.349330 seconds (204.64 k allocations: 1.362 GiB, 9.51% gc time)

julia> main(Gurobi.Optimizer, true; bridges = false)
  0.011561 seconds (138.71 k allocations: 3.433 MiB)

julia> main(Gurobi.Optimizer, false; bridges = false)
  1.280514 seconds (148.71 k allocations: 3.319 MiB)

julia> main(HiGHS.Optimizer, true; bridges = false)
  0.010352 seconds (119.25 k allocations: 3.745 MiB)

julia> main(HiGHS.Optimizer, false; bridges = false)
  2.384257 seconds (204.64 k allocations: 1.362 GiB, 9.59% gc time)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions