-
Notifications
You must be signed in to change notification settings - Fork 94
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
big performance regression between 2.2.2 and 2.4.1 #1141
Comments
|
Thanks! The top results (taking more than 1m) when running this command with odoc 2.4.1 are
There are about 20 Some of those libs are fairly large (in term of number of files, lines of code, but also size of the compilation artifacts). For example there's at least one cmxs of 50mb. This |
I don't know what could cause that, it seems a As a first bisection, how does odoc 2.3 behave? |
2.3.0 is already displaying the regression. I'll try to proceed further with the bisection. |
bisection is complicated because of the external dependency on odoc parser. Some commit like 29810eb do not compile with odoc parser 2.0.0 or 2.3.0 or 2.3.1. Is there a convenient way to know which odoc-parser to use for a given odoc commit?
|
Argh, that is very annoying yes... No, I don't think there is a good way to know that.. However, it is likely to be one of the merged PR from odoc-parser since the last release, that is either:
In the case you are hitting, you likely need to pin Thanks a lot for the involved investigation! |
So I haven't found which commit introduced the regression yet. But I found that master doesn't have the issue! It seems to have been fixed in 13ddc15. |
It looks like the regression came over multiple commits. But I struggle to figure out the worst one yet. Baseline of my test with 2.2.2 is a bit more than 40s. 0300526 already slow at that commit, but not as bad as with 2.3.0. My test takes 57s. There is one or multiple commits later on making things even worse. 92d15ea from odoc-parser for most of my bisecting when odoc-parser is not part of the odoc repo. |
Digged a bit further but I could only narrow it down to a bunch of commits which ends with failures
5146b23 Sorry I can't put much more time into investigating this issue. |
Thanks a lot for the time put into this investigation! It seems that the "render source code" feature, even when not activated (drivers don't know yet how to drive it) is the culprit. I will see if there is a fix simpler than 13ddc15 that we can backport to the 2.3 and 2.4 branches! |
Do you have many modules without interfaces? It seems possible that the cause is that we're doing extra processing of implementations for source-rendering purposes, which would only show up when processing cmt rather than cmti files. |
yes we have a good number of such modules. Generally the repo is fairly large. Tens of thousands of files, millions of lines of code being compiled. In some projects there are basically no mli. The package on which my test takes 40s with odoc 2.2.2 has maybe 300 modules, half those without a corresponding mli. |
We are using odig to create the doc for our whole repo in one go. The process used to take about 8 minutes when we were using odoc 2.2.2. It takes north of 30 minutes since we moved to odoc 2.4.1. I can't share a wide scale reproduction at this stage.
is it a known problem?
The text was updated successfully, but these errors were encountered: