Status of ccache
erik.joelsson at oracle.com
Mon May 25 08:38:28 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.
From README-builds.html in jdk9:
<h4>Building with ccache</h4>
<p>The OpenJDK build supports building with ccache
when using gcc or clang. Using ccache can
radically speed up compilation of native code if
you often rebuild the same sources. Your milage
may vary however so we recommend evaluating it for
yourself. To enable it, make sure it's on the path
and configure with <code>--enable-ccache</code>.</p>
I wouldn't say that's endorsing ccache, but rather reflects the current
state of things. It can be a great speed improvement, but it certainly
varies. Especially in hotspot, if you touch a header file, you
invalidate most of the cache, so it won't help the development usecase
much. It doesn't play very well with precompiled headers as Magnus says,
but I did fix the worst of that a while back so it's far from as bad as
it used to be. I would not discourage trying them both together at this
In JDK 8, the documentation and defaults are probably still bad.
On a related note, a while back I experimented with modifications to
ccache to make it work with Solaris Studio. I believe I got it to work,
but it would certainly need more testing before we could trust it.
More information about the build-dev