Skip to content

Performance of Fl_dynload.load_packages degrades heavily on large OPAM switches #109

@ejgallego

Description

@ejgallego

Dear ocamlfind devs,

I've noticed a large (super-linear) performance degradation of Fl_dynload.load_packages in large OCaml switches, for example, using a bare-bones opam swtich for coq-lsp, we have:

Fl_dynload.load_packages: coq-lsp.serlib.ltac , 0.028070 ms
Fl_dynload.load_packages: coq-lsp.serlib.number_string_notation , 0.025253 ms
Fl_dynload.load_packages: coq-lsp.serlib.tauto , 0.025031 ms
Fl_dynload.load_packages: coq-lsp.serlib.cc_core , 0.025120 ms
Fl_dynload.load_packages: coq-lsp.serlib.cc , 0.024681 ms
Fl_dynload.load_packages: coq-lsp.serlib.firstorder_core , 0.025205 ms
Fl_dynload.load_packages: coq-lsp.serlib.firstorder , 0.025410 ms

if I do opam install memtrace_viewer, I get:

Fl_dynload.load_packages: coq-lsp.serlib.ltac , 0.554432 ms
Fl_dynload.load_packages: coq-lsp.serlib.number_string_notation , 0.567631 ms
Fl_dynload.load_packages: coq-lsp.serlib.tauto , 0.547607 ms
Fl_dynload.load_packages: coq-lsp.serlib.cc_core , 0.550585 ms
Fl_dynload.load_packages: coq-lsp.serlib.cc , 0.549075 ms
Fl_dynload.load_packages: coq-lsp.serlib.firstorder_core , 0.583141 ms
Fl_dynload.load_packages: coq-lsp.serlib.firstorder , 0.558694 ms

If I install more packages Fl_dynload.load_packages become unusable. You can reproduce with simple file calling Fl_dynload.load_packages.

cc: ejgallego/coq-lsp#968

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions