One of the things that’s not been mentioned is to check whether you’re over-specializing. Gains like those in Understanding and optimizing compiler time (just a bit) - #13 by Tamas_Papp are only possible in rare circumstances, but milder versions are fairly common. The fastest way I know of to gain insights about this is Profile-guided despecialization · SnoopCompile. A lower-tech approach is to use using MethodAnalysis; methodinstances(MyPkg)
and just browse the list. You have to run workloads first for this to be useful.
The reason I emphasize this point is that reducing needless specialization is likely to be useful long-term, whereas understandable frustrations with things like forced-precompilation not making much difference may be more transitory as Julia itself improves.