Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-9879

errorprone cause large slowdown of compileJava/compileTestJava

Details

    • Task
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 9.0
    • None
    • None
    • New

    Description

      Errorprone hooks itself into the java compiler (compileJava/compileTestJava). So this static analysis runs, even if you are just recompiling to run tests.

      It causes javac to run 3x slower at the moment.

      With errorprone:

      188.26 sec.  compileTestJava
      180.24 sec.  compileJava
      

      Without errorprone:

        52.54 sec.  compileTestJava
        49.26 sec.  compileJava
      

      The worst part is: if you look at the config, essentially all error-prone checks are disabled. So we aren't getting value out of it, and it slows builds significantly.

      I'd like to have a discussion about it:

      • should we keep it enabled?
      • should it really hook into compileJava/compileTests or maybe be a separate task (e.g. precommit only)

      I'm raising this because it is so slow, that e.g. Uwe mentioned on other issues the possibility of switching to ECJ compiler to try to speed up builds, but, it turns out javac is actually fast. The slowness is error-prone.

      For sure if we are going to use it, I'd like to at least turn on checks and get value out of the thing. But it is unclear to me how many of these checks aren't already met by javac or ecj (which frankly, we still haven't enabled to do good analysis yet, although the situation is improving)

      cc uschindler dweiss

      Attachments

        Issue Links

          Activity

            People

              dweiss Dawid Weiss
              rcmuir Robert Muir
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 0.5h
                  0.5h