Slow static compilation, large binaries (SnoopCompile/PackageCompiler)


#1

We’re using PackageCompiler (on Julia 0.6.3) to generate binaries for a couple of tools that we will be deploying. Even though the package we’re building is pretty modest (a few hundred lines of code, dependencies on 3 other packages outside of base), the image that is built is huge (.so is ~100MB) and it takes quite a while to build.

PackageCompiler claims to find 28k+ uncompiled methods, and ends up taking 5 minutes+ to build. Is there any way to speed this up?

Also, the build is single-threaded/single-process and when I tried to do multiple builds at the same time, SnoopCompile failed. Any ideas to work around this would be much appreciated! Thanks.

2018-10-16T17:41:59 INFO 55 Compiling julia in directory: /tmp/build20181016-174159ViDz0T
2018-10-16T17:41:59 INFO 56 Compiling julia in directory: /tmp/build20181016-174159lNC1nA
2018-10-16T17:41:59 INFO 57 Compiling julia in directory: /tmp/build20181016-1741596Z_lZX
WARNING: Module SnoopCompile uuid did not match cache file.
WARNING: Module SnoopCompile uuid did not match cache file.
ERROR: LoadError: ERROR: LoadError: Module PackageCompiler declares precompile(true) but require failed to create a usable precompiled cache file.Module PackageCompiler declares precompile(true) but require failed to create a usable precompiled cache file.


#2

If it would help, I can generate a small MWE but my impression is that this is a general issue - e.g. a simple wrapper around the ZMQ library takes basically as long to build as a full-sized applications (and the resulting binary is almost as large).