Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
odow opened this issue Oct 5, 2021 · 1 comment
Closed

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

odow opened this issue Oct 5, 2021 · 1 comment
Milestone

Comments

@odow
Copy link
Member

odow commented Oct 5, 2021

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.
@odow
Copy link
Member Author

odow commented Jan 22, 2023

Closing in favor of jump-dev/MathOptInterface.jl#2226. The new SnoopPrecompile fixes almost all of the problems.

@odow odow closed this as completed Jan 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

1 participant