Status of ccache

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Mon May 25 07:44:26 UTC 2015


On 2015-05-22 17:47, Dan Smith wrote:
> JDK-8027584 disabled ccache by default, I gather because it doesn't work in Cygwin, and secondarily because of vague general problems with it.
>
> The documentation (README-builds.html) still unambiguously endorses it, although doesn't say anything about how to turn it on (configure with --enable-ccache).
>
> I'm curious about the current state of affairs, and suggest updating the documentation to reflect the answer.

Ccache is an improvement in some situation, but most often not. 
Especially the hotspot build performance can be affected by ccache 
presense or absense.

There are two major knobs to turn for tuning hotspot build performance: 
precompiled headers, and ccache. The only general rule I can give is:
1) do not use both at the same time, that is more or less always a loss
2) you need to test both for your specific workflow, and measure, to see 
which is best for you

Factors affecting the performance include:
1) Your typical workflow: do you recompile often? From different repos? 
Do you typically do incremental rebuilds or builds from scratch (like a 
Hudson build server)?
2) Your OS
3) Your hardware, and not just like "x86 system" but very specific 
hardware aspects of CPU, bus, memory and disk can alter the performance 
conditions.

In short: since ccache does not give everyone a performance benefit all 
the time, and carries with it risk of complication, we default by having 
it turned off. Precompiled headers are currently on by default, but 
there are discussions in the hotspot team to change that default as well.

The build documentation is sadly outdated in several aspects. :-(

/Magnus




More information about the build-dev mailing list