Hi,

We've been utilising JCC frequently recently during development and
often have a need to recompile our JCC-based extensions due to changes
in the wrapped code - Doing so incurs a reasonably lengthy
re-compilation effort due to the serial nature of the extension
building via distutils.

To help with this we currently have a potential patch that would add
parallel building support to JCC within Linux (based partially off
public domain code for distutils, via monkey patching.)  Would this be
something that might be of interest to be integrated into the mainline
trunk?

The following are some quick and dirty statistics for building the jcc
pylucene itself (incl. java lucene which accounts for about 30-ish
seconds upfront) - The JCC files are split using --files 8, and each
build is preceded with a make clean:

Serial (unpatched):

real    5m1.502s
user    5m22.887s
sys     0m7.749s

Parallel (patched, 4 physical cores, 8 hyperthreads, 8 parallel jobs):

real    1m37.382s
user    7m16.658s
sys     0m8.697s

Furthermore, some additional changes were made to the wrapped file
generation to make the generated code more ccache friendly (additional
deterministic sorting for methods and some usage of an ordered set).
With these in place and the CC and CCACHE_COMPILERCHECK environment
variables set to "ccache gcc" and "content" respectively, and ensuring
ccache is installed, subsequent compilation time is reduced again as
follows:

Parallel (patched, 4 physical cores, 8 hyperthreads, 8 parallel jobs,
ccache enabled):

real    0m43.051s
user    1m10.392s
sys     0m4.547s

This was a run in which nothing changed between runs, so a realistic
run in which changes occur it'll be a figure between 0m43.051s and
1m37.382s, depending on how drastic the change was. If many changes
are expected and you want to keep it more cache friendly then using a
higher --files would probably work (to an extent), or ideally use
--files separate, although it doesn't currently work for me (need to
investigate).

Any thoughts appreciated.

Cheers,
Lee

-- 
Lee Skillen

Vulcan Financial Technologies
1st Floor, 47 Malone Road, Belfast, BT9 6RY

Office:  +44 (0)28 95 817888
Web:     www.vulcanft.com

Reply via email to