Skip to content
Ian Norton edited this page Dec 1, 2013 · 10 revisions

CClash

What?

CClash is a compiler cache for Microsoft's cl. It attempts to speed up builds by skipping build steps that had no contributing source file changes.

You've probably heard of ccache, If not, head on over to http://ccache.samba.org and see the magical thing those that use gcc have been enjoying all these years. CClash is modelled on ccache's direct mode (since executing cl's preprocessor is just as expensive as doing the full compile anyway)

I created CClash after trying clcache - https://github.com/frerich/clcache (a python program with the same aims) a few times and found that in my particular scenario (slow, single core VM, with slow disks) that it didn't work quite as well as in other cases. Indeed, you might find that clcache works better for you so please give it a try too.

The overheads of process creation on windows are slightly higher (from what I can tell personally) than on linux so for CClash the cache-miss overhead is more significant than with ccache.

Is It For Me?

Well, that depends. You are best off trying it out to see if it fits for your scenario. For me, I wanted to reduce the time it took to build OpenSSL on windows (which uses nmake, and a tad inefficiently at that) For me on my triple core 64bit AMD machine with 8GB of RAM I can cut rebuild time to 60% of the original. The first build with an empty cache had about a 40% overhead. So for me, rebuilding OpenSSL more than twice it was a quick time saver.

How Fast is CClash?

It really does depend, the best way is to measure it for yourself. Find out more about various benchmarking and (not very scientific) tests I've done over at the Speed page.

Roadmap

There are a number of ideas in the roadmap issue. Take a look!

Clone this wiki locally