#1080 FindBugs on Enterprise Code and Multi-Core Processors

3.x
closed-rejected
5
2017-10-22
2012-05-21
J.C. Hamlin
No

The performance of FindBugs on our project is not acceptable. It raises the build time in Eclipse from 9 minutes to 19 minutes when it is turned on.

Windows 7 Enterprise 64-bit
Java 1.6.0_31 64-bit
MyEclipse 9.1 64-bit (based on Eclipse 3.6)
Workstation: 12GB RAM, W3680 processor (12 cores at 3.33GHz)

We have about 30 projects, 29 smaller ones which FindBugs runs on quickly, but the largest is 984 packages, 9526 source files, 11,753 classes, 1,634,770 lines of code and uses 180 third-party jar files and it takes FindBugs about 10 minutes to analyze that project. During the time FindBugs is analyzing it the CPU utilization is around 8-10% so FindBugs is using only one core of twelve cores.

Here are some metrics:

FindBugs (TextUI) version 2.0.1-rc2
Command: R:\bin\findbugs-2.0.1-rc2\bin\findbugs.bat -textui -project "project.fbp" -effort:max -output "project-FindBugs-max.xml"
min effort: 6:03
default effort: 7:13
max effort: 7:24
CPU Utilization: 8-16% (1-2 of 12 cores)
(Timings from the UI were also very similar)

FindBugs Plugin version 2.0.0.20111221
smaller projects: 1:50 (vs. 2:59 from the command-line)
large project: 8:10 (vs. 4:25 from the command-line)
max effort: everything: 10:00 (vs 7:24 from the command-line)
CPU utilization (during full build the plugin uses 1 core, during manual scan of multiple projects the plugin uses multiple cores: one per project, the large project still uses 1 core all the way through)

When FindBugs is set to build automatically on a full-build, it will build in sequence, and add 10 minutes to the total build time in Eclipse (changing it from 9 minutes to 19 minutes).

When FindBugs was turned of on a full-build, but instead run manually by selecting the individual projects that need it (which is a pain in and of itself to select only the 30 Java projects scattered between about a total of 170 projects in the workspace), then the plugin ran all 29 of the smaller projects with some degree of parallelism. This saved time.

And finally, while it was analyzing the big project, it was using only 1/12th of the available horsepower of the workstation it was running on. And from within Eclipse, FindBugs took in-total 4 minutes longer (almost twice the time) to run vs. the command-line.

FindBugs needs to run faster within Eclipse (10 minutes vs 7:24 on the command-line), and when multiple-cores are available, FindBugs needs to make use of multiple cores in order to reduce the time it takes to analyze large projects. We want FindBugs on for all builds, and it should use all 12 cores available to it to reduce the analysis time from 10:00 to about a minute or less.

Discussion

  • Andrey Loskutov

    Andrey Loskutov - 2014-06-21
    • labels: Performance --> Performance, Eclipse plugin
    • status: open --> pending
    • assigned_to: William Pugh --> Andrey Loskutov
    • Group: --> 3.x
     
  • Andrey Loskutov

    Andrey Loskutov - 2014-06-21

    Sorry for not responding earlier, do you still observe the issue with different execution times in Eclipse? If yes, could you attach the ant task FB configuration and Eclipse project FB configuration?
    Regards,
    Andrey

     
  • Andrey Loskutov

    Andrey Loskutov - 2017-10-22
    • Status: pending --> closed-rejected
     

Log in to post a comment.