Skip to content

Tracking the time-to-first-solve issue #2735

@odow

Description

@odow

The time-to-first solve issue in MOI has been helpful: jump-dev/MathOptInterface.jl#1313. Here's one for JuMP.

I'm going to close the old issues #2273 #1181 in favor of this one, since they all related to the same problem: latency.

Benchmarks

#2723 added some benchmarking scripts. The most relevant one is running all of the examples from scratch.

$ julia test/perf/JuMPBenchmarks.jl -j /Users/Oscar/julia1.6

This takes quite a while, but it runs each of the examples in a fresh Julia instance.

SnoopCompile

We can also use the SnoopCompile tools

using SnoopCompile
using JuMP
tinf = @snoopi_deep include("docs/src/tutorials/Mixed-integer linear programs/diet.jl")
import ProfileView
fg = flamegraph(tinf)
ProfileView.view(fg)
itrigs = inference_triggers(tinf)
mtrigs = accumulate_by_source(Method, itrigs)
modtrigs = filtermod(JuMP, mtrigs)

Current

Here's what it looks like at the moment:
image

  • The big red blob is our MOI bridging problem.
  • The stuff to the right is also MOI related
  • The second big red blob is instantiating the GLPK optimizer and bridges etc
  • The big green blob is MutableArithmetic-related stuff (we should attack that)
  • Left of the MA stuff is macro issues. The macro code is pretty bad and could do with a big refactoring. Everything currently is untyped Any.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions