With a JSO-compliant solver, such as CaNNOLeS, we can run the solver on a set of problems, explore the results, and compare to other JSO-compliant solvers using specialized benchmark tools. We are following here the tutorial in SolverBenchmark.jl to run benchmarks on JSO-compliant solvers.

using NLSProblems, NLPModels

To test the implementation of CaNNOLeS, we use the package NLSProblems.jl, which implements NLSProblemsModel an instance of AbstractNLPModel.

using SolverBenchmark

Let us select equality-constrained problems from NLSProblems with a maximum of 10000 variables or constraints. After removing problems with fixed variables, examples with a constant objective, and infeasibility residuals, we are left with 82 problems.

problems = (NLSProblems.eval(problem)() for problem in filter(x -> x != :NLSProblems, names(NLSProblems)) )
Base.Generator{Vector{Symbol}, Main.var"#1#3"}(Main.var"#1#3"(), [:BNST2, :BNST3, :LVcon501, :LVcon502, :LVcon503, :LVcon504, :LVcon511, :LVcon512, :LVcon513, :LVcon514  …  :tp354, :tp355, :tp358, :tp370, :tp371, :tp372, :tp373, :tp379, :tp394, :tp395])

We compare here CaNNOLeS with tron (Chih-Jen Lin and Jorge J. Moré, Newton's Method for Large Bound-Constrained Optimization Problems, SIAM J. Optim., 9(4), 1100–1127, 1999.), and trunk (A. R. Conn, N. I. M. Gould, and Ph. L. Toint (2000). Trust-Region Methods, volume 1 of MPS/SIAM Series on Optimization.) implemented in JSOSolvers.jl on a subset of NLSProblems problems.

using CaNNOLeS, JSOSolvers

To make stopping conditions comparable, we set tron's and trunk's parameters atol=0.0, and rtol=1e-5.

#Same time limit for all the solvers
max_time = 1200. #20 minutes

solvers = Dict(
  :tron => nlp -> tron(
    nlp,
    atol = 0.0,
    rtol = 1e-5,
  ),
  :trunk => nlp -> trunk(
    nlp,
    atol = 0.0,
    rtol = 1e-5,
  ),
  :cannoles => nlp -> cannoles(
    nlp,
    atol = 0.0,
    rtol = 1e-5,
  ),
)

stats = bmark_solvers(solvers, problems, skipif = nls -> !NLPModels.unconstrained(nls))
Dict{Symbol, DataFrames.DataFrame} with 3 entries:
  :tron     => 88×40 DataFrame…
  :trunk    => 88×40 DataFrame…
  :cannoles => 88×44 DataFrame

The function bmark_solvers return a Dict of DataFrames with detailed information on the execution. This output can be saved in a data file.

using JLD2
@save "trunk_cannoles_$(string(length(problems))).jld2" stats

The result of the benchmark can be explored via tables,

pretty_stats(stats[:cannoles])
┌─────────────┬────────┬───────┬────────┬────────┬────────┬─────────────┬───────────┬──────────────┬────────┬───────────┬─────────────┬───────────┬────────────┬────────────┬────────────────┬────────────────┬────────────┬─────────────┬───────────┬───────────────┬───────────────┬─────────────┬─────────────────┬─────────────────┬──────────────┬──────────────────┬──────────────────┬────────────┬─────────────┬─────────────┬──────────────┬────────────────┬────────────────────┬──────────────────────┬───────────────────────┬─────────────────────┬──────────────────────┬──────────────────────┬───────────┬───────────┬────────┬────────┬──────────────┐
│ solver_name │     id │  name │   nvar │   ncon │   nequ │      status │ objective │ elapsed_time │   iter │ dual_feas │ primal_feas │ neval_obj │ neval_grad │ neval_cons │ neval_cons_lin │ neval_cons_nln │ neval_jcon │ neval_jgrad │ neval_jac │ neval_jac_lin │ neval_jac_nln │ neval_jprod │ neval_jprod_lin │ neval_jprod_nln │ neval_jtprod │ neval_jtprod_lin │ neval_jtprod_nln │ neval_hess │ neval_hprod │ neval_jhess │ neval_jhprod │ neval_residual │ neval_jac_residual │ neval_jprod_residual │ neval_jtprod_residual │ neval_hess_residual │ neval_jhess_residual │ neval_hprod_residual │ extrainfo │ nlinsolve │  nfact │    nbk │ internal_msg │
├─────────────┼────────┼───────┼────────┼────────┼────────┼─────────────┼───────────┼──────────────┼────────┼───────────┼─────────────┼───────────┼────────────┼────────────┼────────────────┼────────────────┼────────────┼─────────────┼───────────┼───────────────┼───────────────┼─────────────┼─────────────────┼─────────────────┼──────────────┼──────────────────┼──────────────────┼────────────┼─────────────┼─────────────┼──────────────┼────────────────┼────────────────────┼──────────────────────┼───────────────────────┼─────────────────────┼──────────────────────┼──────────────────────┼───────────┼───────────┼────────┼────────┼──────────────┤
│    cannoles │     15 │  NZF1 │     13 │      0 │      5 │ first_order │  1.78e-07 │     4.67e+00 │     11 │  6.45e-04 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             12 │                 12 │                    0 │                     0 │                  11 │                    0 │                    0 │           │        11 │     27 │      0 │              │
│    cannoles │     51 │ mgh01 │      2 │      0 │      2 │ first_order │  2.03e-11 │     3.79e-05 │      3 │  3.18e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              4 │                  4 │                    0 │                     0 │                   3 │                    0 │                    0 │           │         3 │      6 │      0 │              │
│    cannoles │     52 │ mgh02 │      2 │      0 │      2 │ first_order │  2.45e+01 │     2.22e-05 │      5 │  1.69e-04 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              6 │                  6 │                    0 │                     0 │                   5 │                    0 │                    0 │           │         5 │      5 │      0 │              │
│    cannoles │     53 │ mgh03 │      2 │      0 │      2 │ first_order │  1.89e-04 │     3.60e-05 │      8 │  9.53e-02 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              9 │                  9 │                    0 │                     0 │                   8 │                    0 │                    0 │           │         8 │     13 │      0 │              │
│    cannoles │     54 │ mgh04 │      2 │      0 │      3 │ first_order │  3.60e-10 │     2.88e-05 │      2 │  3.00e-01 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             13 │                 10 │                    0 │                     0 │                   8 │                    0 │                    0 │           │         8 │     12 │      3 │              │
│    cannoles │     55 │ mgh05 │      2 │      0 │      3 │ first_order │  3.51e-12 │     3.50e-05 │      7 │  1.61e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              8 │                  8 │                    0 │                     0 │                   7 │                    0 │                    0 │           │         7 │     12 │      0 │              │
│    cannoles │     56 │ mgh06 │      2 │      0 │     10 │ first_order │  6.22e+01 │     6.20e-05 │      6 │  1.72e-01 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              7 │                  7 │                    0 │                     0 │                   6 │                    0 │                    0 │           │         6 │      6 │      0 │              │
│    cannoles │     57 │ mgh07 │      3 │      0 │      3 │ first_order │  3.37e-07 │     2.24e-04 │     18 │  4.27e-04 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             19 │                 19 │                    0 │                     0 │                  18 │                    0 │                    0 │           │        18 │     33 │      0 │              │
│    cannoles │     58 │ mgh08 │      3 │      0 │     15 │ first_order │  4.66e-01 │     1.51e-04 │     11 │  1.24e-04 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             12 │                 12 │                    0 │                     0 │                  11 │                    0 │                    0 │           │        11 │     18 │      0 │              │
│    cannoles │     59 │ mgh09 │      3 │      0 │     15 │ first_order │  5.64e-09 │     5.39e-05 │      2 │  3.35e-11 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              3 │                  3 │                    0 │                     0 │                   2 │                    0 │                    0 │           │         2 │      2 │      0 │              │
│    cannoles │     60 │ mgh10 │      3 │      0 │     16 │ first_order │  4.66e+05 │     1.69e-04 │      5 │  1.65e+05 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             10 │                  9 │                    0 │                     0 │                   6 │                    0 │                    0 │           │         6 │     18 │      1 │              │
│    cannoles │     61 │ mgh11 │      3 │      0 │    100 │ first_order │  1.64e+01 │     1.41e-03 │      8 │  3.61e-13 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              9 │                  9 │                    0 │                     0 │                   8 │                    0 │                    0 │           │         8 │     19 │      0 │              │
│    cannoles │     62 │ mgh12 │      3 │      0 │     10 │ first_order │  1.81e-07 │     1.84e-04 │     15 │  5.46e-05 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             16 │                 16 │                    0 │                     0 │                  15 │                    0 │                    0 │           │        15 │     23 │      0 │              │
│    cannoles │     63 │ mgh13 │      4 │      0 │      4 │ first_order │  8.26e-07 │     3.60e-05 │      9 │  6.62e-05 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             10 │                 10 │                    0 │                     0 │                   9 │                    0 │                    0 │           │         9 │      9 │      0 │              │
│    cannoles │     64 │ mgh14 │      4 │      0 │      6 │ first_order │  3.94e+00 │     2.69e-05 │      6 │  2.80e-02 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              7 │                  7 │                    0 │                     0 │                   6 │                    0 │                    0 │           │         6 │      6 │      0 │              │
│    cannoles │     65 │ mgh15 │      4 │      0 │     11 │ first_order │  5.20e-02 │     1.14e-03 │     57 │  1.92e-08 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             83 │                 69 │                    0 │                     0 │                  63 │                    0 │                    0 │           │        63 │    140 │     14 │              │
│    cannoles │     66 │ mgh16 │      4 │      0 │     20 │ first_order │  4.29e+04 │     2.12e-04 │      7 │  2.00e+00 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             10 │                  9 │                    0 │                     0 │                   7 │                    0 │                    0 │           │         7 │      7 │      1 │              │
│    cannoles │     67 │ mgh17 │      5 │      0 │     33 │ first_order │  3.86e-05 │     7.04e-04 │     15 │  1.24e-04 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             16 │                 16 │                    0 │                     0 │                  15 │                    0 │                    0 │           │        15 │     31 │      0 │              │
│    cannoles │     68 │ mgh18 │      6 │      0 │     13 │ first_order │  2.83e-03 │     1.86e-03 │     69 │  1.16e-07 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             70 │                 70 │                    0 │                     0 │                  69 │                    0 │                    0 │           │        69 │    167 │      0 │              │
│    cannoles │     69 │ mgh19 │     11 │      0 │     65 │ first_order │  1.37e-01 │     8.16e-03 │     35 │  2.13e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             47 │                 39 │                    0 │                     0 │                  35 │                    0 │                    0 │           │        35 │     70 │      8 │              │
│    cannoles │     70 │ mgh20 │      6 │      0 │     31 │ first_order │  1.14e-03 │     1.15e-03 │      6 │  2.13e-05 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              7 │                  7 │                    0 │                     0 │                   6 │                    0 │                    0 │           │         6 │      6 │      0 │              │
│    cannoles │     71 │ mgh21 │     20 │      0 │     20 │ first_order │  2.03e-10 │     4.01e-05 │      3 │  3.18e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              4 │                  4 │                    0 │                     0 │                   3 │                    0 │                    0 │           │         3 │      6 │      0 │              │
│    cannoles │     72 │ mgh22 │     20 │      0 │     20 │ first_order │  1.78e-05 │     9.58e-05 │      9 │  3.24e-04 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             10 │                 10 │                    0 │                     0 │                   9 │                    0 │                    0 │           │         9 │      9 │      0 │              │
│    cannoles │     73 │ mgh23 │      4 │      0 │      5 │ first_order │  1.92e-05 │     3.70e-05 │      7 │  1.52e-03 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              8 │                  8 │                    0 │                     0 │                   7 │                    0 │                    0 │           │         7 │      7 │      0 │              │
│    cannoles │     74 │ mgh24 │      4 │      0 │      8 │ first_order │  1.82e-06 │     5.39e-05 │      5 │  2.46e-05 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              6 │                  6 │                    0 │                     0 │                   5 │                    0 │                    0 │           │         5 │      9 │      0 │              │
│    cannoles │     75 │ mgh25 │     10 │      0 │     12 │ first_order │  4.84e-01 │     9.20e-05 │      8 │  1.09e+01 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              9 │                  9 │                    0 │                     0 │                   8 │                    0 │                    0 │           │         8 │      8 │      0 │              │
│    cannoles │     76 │ mgh26 │     10 │      0 │     10 │ first_order │  1.40e-05 │     3.37e-04 │     11 │  2.35e-10 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             12 │                 12 │                    0 │                     0 │                  11 │                    0 │                    0 │           │        11 │     23 │      0 │              │
│    cannoles │     77 │ mgh27 │     10 │      0 │     10 │ first_order │  3.85e-07 │     6.58e-05 │      5 │  4.80e-05 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              6 │                  6 │                    0 │                     0 │                   5 │                    0 │                    0 │           │         5 │      5 │      0 │              │
│    cannoles │     78 │ mgh28 │     10 │      0 │     10 │ first_order │  1.67e-25 │     4.70e-05 │      3 │  1.62e-14 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              4 │                  4 │                    0 │                     0 │                   3 │                    0 │                    0 │           │         3 │      3 │      0 │              │
│    cannoles │     79 │ mgh29 │     10 │      0 │     10 │ first_order │  3.30e-23 │     1.30e-04 │      3 │  3.12e-12 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              4 │                  4 │                    0 │                     0 │                   3 │                    0 │                    0 │           │         3 │      3 │      0 │              │
│    cannoles │     80 │ mgh30 │     10 │      0 │     10 │ first_order │  4.01e-10 │     4.60e-05 │      4 │  4.41e-05 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              5 │                  5 │                    0 │                     0 │                   4 │                    0 │                    0 │           │         4 │      4 │      0 │              │
│    cannoles │     81 │ mgh31 │     10 │      0 │     10 │ first_order │  8.27e-10 │     1.04e-04 │      6 │  1.02e-04 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              7 │                  7 │                    0 │                     0 │                   6 │                    0 │                    0 │           │         6 │      6 │      0 │              │
│    cannoles │     82 │ mgh32 │     10 │      0 │     20 │ first_order │  5.00e+00 │     2.79e-05 │      1 │  1.21e-05 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              2 │                  2 │                    0 │                     0 │                   1 │                    0 │                    0 │           │         1 │      2 │      0 │              │
│    cannoles │     83 │ mgh33 │     10 │      0 │     20 │ first_order │  2.32e+00 │     2.41e-05 │      1 │  8.64e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              2 │                  2 │                    0 │                     0 │                   1 │                    0 │                    0 │           │         1 │      2 │      0 │              │
│    cannoles │     84 │ mgh34 │     10 │      0 │     20 │ first_order │  3.07e+00 │     1.91e-05 │      1 │  8.43e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              2 │                  2 │                    0 │                     0 │                   1 │                    0 │                    0 │           │         1 │      2 │      0 │              │
│    cannoles │     85 │ mgh01 │      2 │      0 │      2 │ first_order │  2.03e-11 │     1.60e-05 │      3 │  3.18e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              4 │                  4 │                    0 │                     0 │                   3 │                    0 │                    0 │           │         3 │      6 │      0 │              │
│    cannoles │     86 │ tp201 │      2 │      0 │      2 │ first_order │  2.06e-10 │     5.96e-06 │      1 │  1.82e-05 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              2 │                  2 │                    0 │                     0 │                   1 │                    0 │                    0 │           │         1 │      2 │      0 │              │
│    cannoles │     87 │ tp202 │      2 │      0 │      2 │ first_order │  2.45e+01 │     2.19e-05 │      5 │  2.83e-03 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              6 │                  6 │                    0 │                     0 │                   5 │                    0 │                    0 │           │         5 │      5 │      0 │              │
│    cannoles │     88 │ tp203 │      2 │      0 │      3 │ first_order │  3.06e-15 │     2.60e-05 │      5 │  1.31e-08 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              6 │                  6 │                    0 │                     0 │                   5 │                    0 │                    0 │           │         5 │      5 │      0 │              │
│    cannoles │     89 │ tp204 │      2 │      0 │      3 │ first_order │  9.18e-02 │     2.69e-05 │      4 │  9.36e-07 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              5 │                  5 │                    0 │                     0 │                   4 │                    0 │                    0 │           │         4 │      4 │      0 │              │
│    cannoles │     90 │ tp205 │      2 │      0 │      3 │ first_order │  2.31e-11 │     3.39e-05 │      7 │  4.53e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              8 │                  8 │                    0 │                     0 │                   7 │                    0 │                    0 │           │         7 │     12 │      0 │              │
│    cannoles │     91 │ tp206 │      2 │      0 │      2 │ first_order │  7.14e-08 │     1.31e-05 │      2 │  9.68e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              3 │                  3 │                    0 │                     0 │                   2 │                    0 │                    0 │           │         2 │      4 │      0 │              │
│    cannoles │     92 │ tp207 │      2 │      0 │      2 │ first_order │  1.27e-12 │     1.41e-05 │      3 │  7.14e-07 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              4 │                  4 │                    0 │                     0 │                   3 │                    0 │                    0 │           │         3 │      6 │      0 │              │
│    cannoles │     93 │ tp208 │      2 │      0 │      2 │ first_order │  2.03e-11 │     1.38e-05 │      3 │  3.18e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              4 │                  4 │                    0 │                     0 │                   3 │                    0 │                    0 │           │         3 │      6 │      0 │              │
│    cannoles │     94 │ tp209 │      2 │      0 │      2 │ first_order │  2.12e-11 │     1.41e-05 │      3 │  3.26e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              4 │                  4 │                    0 │                     0 │                   3 │                    0 │                    0 │           │         3 │      6 │      0 │              │
│    cannoles │     95 │ tp210 │      2 │      0 │      2 │ first_order │  2.42e+00 │     1.00e-05 │      1 │  2.20e+00 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              2 │                  2 │                    0 │                     0 │                   1 │                    0 │                    0 │           │         1 │      2 │      0 │              │
│    cannoles │     96 │ tp211 │      2 │      0 │      2 │ first_order │  9.83e-11 │     1.50e-05 │      3 │  4.55e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              4 │                  4 │                    0 │                     0 │                   3 │                    0 │                    0 │           │         3 │      6 │      0 │              │
│    cannoles │     97 │ tp212 │      2 │      0 │      2 │ first_order │  1.63e-14 │     3.31e-05 │     10 │  3.49e-07 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             11 │                 11 │                    0 │                     0 │                  10 │                    0 │                    0 │           │        10 │     14 │      0 │              │
│    cannoles │     98 │ tp213 │      2 │      0 │      1 │ first_order │  1.60e+00 │     2.69e-05 │     10 │  2.60e+01 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             11 │                 11 │                    0 │                     0 │                  10 │                    0 │                    0 │           │        10 │     10 │      0 │              │
│    cannoles │    107 │ tp240 │      3 │      0 │      3 │ first_order │  9.31e-08 │     8.82e-06 │      1 │  6.06e-04 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              2 │                  2 │                    0 │                     0 │                   1 │                    0 │                    0 │           │         1 │      2 │      0 │              │
│    cannoles │    108 │ tp241 │      3 │      0 │      5 │ first_order │  1.47e-06 │     9.70e-05 │     16 │  5.33e-04 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             19 │                 18 │                    0 │                     0 │                  16 │                    0 │                    0 │           │        16 │     32 │      1 │              │
│    cannoles │    111 │ tp245 │      3 │      0 │     10 │ first_order │  1.81e-07 │     1.86e-04 │     15 │  5.46e-05 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             16 │                 16 │                    0 │                     0 │                  15 │                    0 │                    0 │           │        15 │     23 │      0 │              │
│    cannoles │    112 │ tp246 │      3 │      0 │      3 │ first_order │  4.63e-14 │     1.81e-05 │      3 │  2.15e-07 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              4 │                  4 │                    0 │                     0 │                   3 │                    0 │                    0 │           │         3 │      6 │      0 │              │
│    cannoles │    116 │ tp256 │      4 │      0 │      4 │ first_order │  4.03e-06 │     3.60e-05 │      9 │  3.31e-04 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             10 │                 10 │                    0 │                     0 │                   9 │                    0 │                    0 │           │         9 │      9 │      0 │              │
│    cannoles │    117 │ tp260 │      4 │      0 │      7 │ first_order │  3.94e+00 │     2.60e-05 │      6 │  2.80e-02 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              7 │                  7 │                    0 │                     0 │                   6 │                    0 │                    0 │           │         6 │      6 │      0 │              │
│    cannoles │    118 │ tp261 │      4 │      0 │      5 │ first_order │  1.29e-11 │     6.70e-05 │     14 │  2.11e-08 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             15 │                 15 │                    0 │                     0 │                  14 │                    0 │                    0 │           │        14 │     20 │      0 │              │
│    cannoles │    120 │ tp266 │      5 │      0 │     10 │ first_order │  5.00e-01 │     2.87e-04 │      6 │  6.10e-09 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              7 │                  7 │                    0 │                     0 │                   6 │                    0 │                    0 │           │         6 │     10 │      0 │              │
│    cannoles │    121 │ tp267 │      5 │      0 │     11 │ first_order │  2.71e-02 │     7.54e-04 │     38 │  4.65e-08 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             43 │                 41 │                    0 │                     0 │                  38 │                    0 │                    0 │           │        38 │     80 │      2 │              │
│    cannoles │    124 │ tp271 │      6 │      0 │      6 │ first_order │  8.98e-13 │     7.87e-06 │      1 │  6.06e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              2 │                  2 │                    0 │                     0 │                   1 │                    0 │                    0 │           │         1 │      2 │      0 │              │
│    cannoles │    125 │ tp272 │      6 │      0 │     13 │ first_order │  7.49e-14 │     1.62e-03 │     63 │  1.93e-11 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             64 │                 64 │                    0 │                     0 │                  63 │                    0 │                    0 │           │        63 │    149 │      0 │              │
│    cannoles │    126 │ tp273 │      6 │      0 │      7 │ first_order │  2.63e-05 │     6.01e-05 │      8 │  3.97e-02 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              9 │                  9 │                    0 │                     0 │                   8 │                    0 │                    0 │           │         8 │      8 │      0 │              │
│    cannoles │    127 │ tp282 │     10 │      0 │     11 │ first_order │  9.55e-11 │     2.92e-04 │     30 │  5.33e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             45 │                 36 │                    0 │                     0 │                  33 │                    0 │                    0 │           │        33 │     69 │      9 │              │
│    cannoles │    128 │ tp286 │     20 │      0 │     20 │ first_order │  2.03e-10 │     3.98e-05 │      3 │  3.18e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              4 │                  4 │                    0 │                     0 │                   3 │                    0 │                    0 │           │         3 │      6 │      0 │              │
│    cannoles │    129 │ tp288 │     20 │      0 │     20 │ first_order │  2.02e-05 │     9.42e-05 │      9 │  3.31e-04 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             10 │                 10 │                    0 │                     0 │                   9 │                    0 │                    0 │           │         9 │      9 │      0 │              │
│    cannoles │    130 │ tp290 │      2 │      0 │      1 │ first_order │  3.29e-08 │     2.60e-05 │     10 │  5.86e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             11 │                 11 │                    0 │                     0 │                  10 │                    0 │                    0 │           │        10 │     10 │      0 │              │
│    cannoles │    131 │ tp291 │     10 │      0 │      1 │ first_order │  7.57e-05 │     4.20e-05 │      9 │  2.28e-03 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             10 │                 10 │                    0 │                     0 │                   9 │                    0 │                    0 │           │         9 │      9 │      0 │              │
│    cannoles │    132 │ tp292 │     30 │      0 │      1 │ first_order │  3.71e-02 │     7.61e-05 │      8 │  2.45e-01 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              9 │                  9 │                    0 │                     0 │                   8 │                    0 │                    0 │           │         8 │      8 │      0 │              │
│    cannoles │    133 │ tp293 │     50 │      0 │      1 │ first_order │  2.79e-01 │     1.10e-04 │      8 │  1.12e+00 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              9 │                  9 │                    0 │                     0 │                   8 │                    0 │                    0 │           │         8 │      8 │      0 │              │
│    cannoles │    134 │ tp294 │      6 │      0 │     10 │ first_order │  1.99e+00 │     7.39e-05 │     10 │  3.14e-05 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             14 │                 12 │                    0 │                     0 │                  10 │                    0 │                    0 │           │        10 │     28 │      2 │              │
│    cannoles │    135 │ tp295 │     10 │      0 │     18 │ first_order │  1.99e+00 │     1.94e-04 │     21 │  4.17e-05 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             22 │                 22 │                    0 │                     0 │                  21 │                    0 │                    0 │           │        21 │     56 │      0 │              │
│    cannoles │    136 │ tp296 │     16 │      0 │     30 │ first_order │  1.99e+00 │     3.78e-04 │     27 │  2.97e-05 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             28 │                 28 │                    0 │                     0 │                  27 │                    0 │                    0 │           │        27 │     71 │      0 │              │
│    cannoles │    137 │ tp297 │     30 │      0 │     58 │ first_order │  1.90e-08 │     9.72e-04 │     36 │  1.42e-05 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             52 │                 42 │                    0 │                     0 │                  37 │                    0 │                    0 │           │        37 │     94 │     10 │              │
│    cannoles │    138 │ tp298 │     50 │      0 │     98 │ first_order │  4.10e-05 │     2.64e-03 │     55 │  1.27e-03 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             80 │                 64 │                    0 │                     0 │                  58 │                    0 │                    0 │           │        58 │    150 │     16 │              │
│    cannoles │    139 │ tp299 │    100 │      0 │    198 │ first_order │  1.09e-09 │     1.58e-02 │    108 │  4.86e-07 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │            310 │                211 │                    0 │                     0 │                 167 │                    0 │                    0 │           │       167 │    386 │     99 │              │
│    cannoles │    140 │ tp303 │     20 │      0 │     22 │ first_order │  1.65e-07 │     3.09e-04 │      9 │  5.75e-03 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             10 │                 10 │                    0 │                     0 │                   9 │                    0 │                    0 │           │         9 │      9 │      0 │              │
│    cannoles │    141 │ tp304 │     50 │      0 │     52 │ first_order │  3.26e+00 │     1.49e-03 │      8 │  1.18e+02 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              9 │                  9 │                    0 │                     0 │                   8 │                    0 │                    0 │           │         8 │      8 │      0 │              │
│    cannoles │    142 │ tp305 │    100 │      0 │    102 │ first_order │  7.05e+02 │     7.12e-03 │      8 │  1.41e+04 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              9 │                  9 │                    0 │                     0 │                   8 │                    0 │                    0 │           │         8 │      8 │      0 │              │
│    cannoles │    144 │ tp308 │      2 │      0 │      3 │ first_order │  3.87e-01 │     3.60e-05 │      7 │  1.82e-07 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              8 │                  8 │                    0 │                     0 │                   7 │                    0 │                    0 │           │         7 │      7 │      0 │              │
│    cannoles │    145 │ tp311 │      2 │      0 │      2 │ first_order │  1.37e-12 │     2.69e-05 │      7 │  3.56e-06 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              8 │                  8 │                    0 │                     0 │                   7 │                    0 │                    0 │           │         7 │     15 │      0 │              │
│    cannoles │    146 │ tp312 │      2 │      0 │      2 │ first_order │  5.99e+00 │     1.79e-05 │      3 │  1.67e+00 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              4 │                  4 │                    0 │                     0 │                   3 │                    0 │                    0 │           │         3 │      3 │      0 │              │
│    cannoles │    158 │ tp333 │      3 │      0 │      8 │ first_order │  2.16e-02 │     6.01e-05 │      5 │  6.65e-03 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              6 │                  6 │                    0 │                     0 │                   5 │                    0 │                    0 │           │         5 │      8 │      0 │              │
│    cannoles │    159 │ tp334 │      3 │      0 │     15 │ first_order │  4.66e-01 │     1.51e-04 │     11 │  1.24e-04 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             12 │                 12 │                    0 │                     0 │                  11 │                    0 │                    0 │           │        11 │     18 │      0 │              │
│    cannoles │    163 │ tp350 │      4 │      0 │     11 │ first_order │  5.20e-02 │     1.16e-03 │     57 │  1.92e-08 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             83 │                 69 │                    0 │                     0 │                  63 │                    0 │                    0 │           │        63 │    140 │     14 │              │
│    cannoles │    164 │ tp351 │      4 │      0 │      7 │ first_order │  1.59e+02 │     8.39e-05 │      5 │  1.43e-02 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              6 │                  6 │                    0 │                     0 │                   5 │                    0 │                    0 │           │         5 │     10 │      0 │              │
│    cannoles │    165 │ tp352 │      4 │      0 │     40 │ first_order │  4.52e+02 │     1.29e-05 │      1 │  4.55e-13 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              2 │                  2 │                    0 │                     0 │                   1 │                    0 │                    0 │           │         1 │      1 │      0 │              │
│    cannoles │    169 │ tp370 │      6 │      0 │     31 │ first_order │  1.14e-03 │     1.23e-03 │      6 │  2.13e-05 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              7 │                  7 │                    0 │                     0 │                   6 │                    0 │                    0 │           │         6 │      6 │      0 │              │
│    cannoles │    170 │ tp371 │      9 │      0 │     31 │ first_order │  7.09e-07 │     2.13e-03 │      6 │  1.99e-07 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │              7 │                  7 │                    0 │                     0 │                   6 │                    0 │                    0 │           │         6 │      6 │      0 │              │
│    cannoles │    173 │ tp379 │     11 │      0 │     65 │ first_order │  2.01e-02 │     3.45e-03 │     16 │  1.95e-08 │    0.00e+00 │         0 │          0 │          0 │              0 │              0 │          0 │           0 │         0 │             0 │             0 │           0 │               0 │               0 │            0 │                0 │                0 │          0 │           0 │           0 │            0 │             24 │                 19 │                    0 │                     0 │                  16 │                    0 │                    0 │           │        16 │     26 │      5 │              │
└─────────────┴────────┴───────┴────────┴────────┴────────┴─────────────┴───────────┴──────────────┴────────┴───────────┴─────────────┴───────────┴────────────┴────────────┴────────────────┴────────────────┴────────────┴─────────────┴───────────┴───────────────┴───────────────┴─────────────┴─────────────────┴─────────────────┴──────────────┴──────────────────┴──────────────────┴────────────┴─────────────┴─────────────┴──────────────┴────────────────┴────────────────────┴──────────────────────┴───────────────────────┴─────────────────────┴──────────────────────┴──────────────────────┴───────────┴───────────┴────────┴────────┴──────────────┘

or it can also be used to make performance profiles.

using Plots
gr()

legend = Dict(
  :neval_obj => "number of f evals",
  :neval_residual => "number of F evals",
  :neval_cons => "number of c evals",
  :neval_grad => "number of ∇f evals",
  :neval_jac => "number of ∇c evals",
  :neval_jprod => "number of ∇c*v evals",
  :neval_jtprod  => "number of ∇cᵀ*v evals",
  :neval_hess  => "number of ∇²f evals",
  :elapsed_time => "elapsed time"
)
perf_title(col) = "Performance profile on NLSProblems w.r.t. $(string(legend[col]))"

styles = [:solid, :dash, :dot, :dashdot]

function print_pp_column(col::Symbol, stats)

  ϵ = minimum(minimum(filter(x -> x > 0, df[!, col])) for df in values(stats))
  first_order(df) = df.status .== :first_order
  unbounded(df) = df.status .== :unbounded
  solved(df) = first_order(df) .| unbounded(df)
  cost(df) = (max.(df[!, col], ϵ) + .!solved(df) .* Inf)

  p = performance_profile(
    stats,
    cost,
    title=perf_title(col),
    legend=:bottomright,
    linestyles=styles
  )
end

print_pp_column(:elapsed_time, stats) # with respect to time
Example block output
print_pp_column(:neval_residual, stats) # with respect to number of residual function evaluations
Example block output