Providing precompiled ji files within a package

Hi!

I am developing a package with a heavy precompilation time (5-10 minutes, but could be a bit more). The .ji are not that big though and it runs pretty fast.
Is it possible to provide .ji files (per platform I suppose) instead of having recompilation?

If not, I can think of some workaround, but the code will be much longer and harder to read (and less efficient at run time I think).

What version of Julia is this for? Also what does the package do? It’s quite possible that the time may be less on 1.5, and/or that you are doing something that makes the compiler go crazy which can be minimized.

I am using 1.5 (unfortunately, I would have loved a speed bump).

I know what is happening, that is constructing a huge automaton with Automa.jl. I can “cheat” by parsing by hand some part of the input, or split my automaton into several smaller ones (but that would imply parsing several times some part of the stream).

Basically, I don’t mind having myself a long compilation time for the package if I can avoid it for the users.

I think you could try to use https://timholy.github.io/SnoopCompile.jl/stable/.

3 Likes

Thank you for the advice, just snooping on inference gave me a nice 30% decrease in compilation time.
Snooping on code generation could be even more efficient, but it is already pretty nice.