From 5cb81a4245ced16b2df85893893e7a464d7dbb47 Mon Sep 17 00:00:00 2001 From: odow Date: Thu, 16 Dec 2021 08:42:27 +1300 Subject: [PATCH 1/2] [perf] more latency improvements --- perf/time_to_first_solve/script.jl | 6 ++++++ src/Bridges/Bridges.jl | 4 ++++ src/Bridges/precompile.jl | 14 ++++++++++++++ src/Utilities/precompile.jl | 1 + 4 files changed, 25 insertions(+) create mode 100644 src/Bridges/precompile.jl diff --git a/perf/time_to_first_solve/script.jl b/perf/time_to_first_solve/script.jl index ffea63701a..be2f5fdfea 100644 --- a/perf/time_to_first_solve/script.jl +++ b/perf/time_to_first_solve/script.jl @@ -80,3 +80,9 @@ if length(ARGS) > 0 end exit(0) end + +# using SnoopCompileCore +# tinf = @snoopi_deep example_diet(Clp.Optimizer, true) +# using SnoopCompile, ProfileView +# fg = flamegraph(tinf) +# ProfileView.view(fg) diff --git a/src/Bridges/Bridges.jl b/src/Bridges/Bridges.jl index aa9bc4f9c8..42d7695078 100644 --- a/src/Bridges/Bridges.jl +++ b/src/Bridges/Bridges.jl @@ -175,4 +175,8 @@ function Base.show(io::IO, B::AbstractBridgeOptimizer) return end +if VERSION > v"1.4.2" + include("precompile.jl") +end + end diff --git a/src/Bridges/precompile.jl b/src/Bridges/precompile.jl new file mode 100644 index 0000000000..77f99e879d --- /dev/null +++ b/src/Bridges/precompile.jl @@ -0,0 +1,14 @@ +function _precompile_() + ccall(:jl_generating_output, Cint, ()) == 1 || return nothing + Base.precompile( + full_bridge_optimizer, + (MOI.AbstractOptimizer, Type{Float64}), + ) + Base.precompile( + unbridged_function, + (LazyBridgeOptimizer, MOI.AbstractScalarFunction), + ) # time: 0.1381832 + return +end + +_precompile_() diff --git a/src/Utilities/precompile.jl b/src/Utilities/precompile.jl index 8a89ae7a18..969eb3c2ea 100644 --- a/src/Utilities/precompile.jl +++ b/src/Utilities/precompile.jl @@ -40,5 +40,6 @@ function _precompile_() CachingOptimizer{MOI.AbstractOptimizer,UniversalFallback{Model{T}}}, constraints, ) + Base.precompile(UniversalFallback, (Model{T},)) return end From ea40b2d52e980af36fb69ab3a158db24f9fe76e0 Mon Sep 17 00:00:00 2001 From: odow Date: Thu, 16 Dec 2021 08:50:11 +1300 Subject: [PATCH 2/2] Fix innocuous type conversion --- src/Utilities/universalfallback.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Utilities/universalfallback.jl b/src/Utilities/universalfallback.jl index 9a96a918a9..04b5dce9aa 100644 --- a/src/Utilities/universalfallback.jl +++ b/src/Utilities/universalfallback.jl @@ -29,7 +29,7 @@ mutable struct UniversalFallback{MT} <: MOI.ModelLike return new{typeof(model)}( model, nothing, - OrderedDict{Tuple{Type,Type},OrderedDict}(), + OrderedDict{Type,OrderedDict}(), OrderedDict{Tuple{Type,Type},VectorOfConstraints}(), Dict{MOI.ConstraintIndex,String}(), nothing,