From 3dcac30e1f7decc4ac6b41bf7f8f0ab2e06551ae Mon Sep 17 00:00:00 2001 From: odow Date: Mon, 23 Jan 2023 11:45:09 +1300 Subject: [PATCH 1/2] Improve precompilation with nospecialize and some more SnoopPrecompile --- src/JuMP.jl | 5 ++++- src/optimizer_interface.jl | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/JuMP.jl b/src/JuMP.jl index cd77a98fe76..9ba51d739e5 100644 --- a/src/JuMP.jl +++ b/src/JuMP.jl @@ -170,7 +170,7 @@ env = Gurobi.Env() model = Model(() -> Gurobi.Optimizer(env); add_bridges = false) ``` """ -function Model(optimizer_factory; add_bridges::Bool = true) +function Model((@nospecialize optimizer_factory); add_bridges::Bool = true) model = Model() set_optimizer(model, optimizer_factory; add_bridges = add_bridges) return model @@ -826,6 +826,9 @@ using SnoopPrecompile @objective(model, Min, 12x + 20y) @constraint(model, c1, 6x + 8y >= 100) @constraint(model, c2, 7x + 12y >= 120) + @constraint(model, [x, y, x] in SecondOrderCone()) + @constraint(model, [1.0 * x y; y x] >= 0, PSDCone()) + @constraint(model, 1.0 * x ⟂ y) optimize!(model) end end diff --git a/src/optimizer_interface.jl b/src/optimizer_interface.jl index 0d38d94d739..ddfebcbcdbc 100644 --- a/src/optimizer_interface.jl +++ b/src/optimizer_interface.jl @@ -397,7 +397,7 @@ set_optimizer(model, HiGHS.Optimizer; add_bridges = false) """ function set_optimizer( model::Model, - optimizer_constructor; + (@nospecialize optimizer_constructor); add_bridges::Bool = true, ) error_if_direct_mode(model, :set_optimizer) From 20c6d897d376141f7ae0a9c1bc7e834e2c62fcc6 Mon Sep 17 00:00:00 2001 From: odow Date: Mon, 23 Jan 2023 13:00:12 +1300 Subject: [PATCH 2/2] Fix formatting --- src/JuMP.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/JuMP.jl b/src/JuMP.jl index 9ba51d739e5..709d535fa0e 100644 --- a/src/JuMP.jl +++ b/src/JuMP.jl @@ -827,7 +827,7 @@ using SnoopPrecompile @constraint(model, c1, 6x + 8y >= 100) @constraint(model, c2, 7x + 12y >= 120) @constraint(model, [x, y, x] in SecondOrderCone()) - @constraint(model, [1.0 * x y; y x] >= 0, PSDCone()) + @constraint(model, [1.0*x y; y x] >= 0, PSDCone()) @constraint(model, 1.0 * x ⟂ y) optimize!(model) end