# Comparition of timing v1.9 vs v1.8 and how to get this precompilation in my own packages?

**URL:** <https://discourse.julialang.org/t/comparition-of-timing-v1-9-vs-v1-8-and-how-to-get-this-precompilation-in-my-own-packages/98372>\
**Category:** General Usage\
**Created:** [May 5, 2023, 7:54am UTC](https://discourse.julialang.org/t/comparition-of-timing-v1-9-vs-v1-8-and-how-to-get-this-precompilation-in-my-own-packages/98372 "2023-05-05T07:54:56Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [May 5, 2023, 7:54am UTC](https://discourse.julialang.org/t/comparition-of-timing-v1-9-vs-v1-8-and-how-to-get-this-precompilation-in-my-own-packages/98372/1 "2023-05-05T07:54:56Z")

</div>

Just tested Julia v1.9rc3 and compared the timining to first plot with Julia 1.8 on a terminal under a new temporary project environment:

| Command | Julia 1.9rc3 | Julia 1.8 |
| --- | --- | --- |
| add Plots | 2’ 32’’ | 1’ 22’’ |
| using Plots | 3’’ | 6’’ |
| plot (x-\>x^2) | 1’’ | 7’’ |

Is this heavy precompilation coming automatically or does it need to be somehow enabled in the package ? How to do it while maintaining compatibility with pre-1.9 Julia versions ?

---

<div class="post-metadata">

**Author:** ![rveltz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rveltz/32/2707_2.png) [@rveltz](https://discourse.julialang.org/u/rveltz)\
**Post date:** [May 5, 2023, 7:59am UTC](https://discourse.julialang.org/t/comparition-of-timing-v1-9-vs-v1-8-and-how-to-get-this-precompilation-in-my-own-packages/98372/2 "2023-05-05T07:59:14Z")

</div>

it should be done once. 1.9 saves more precompiled code

---

<div class="post-metadata">

**Author:** ![jishnub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jishnub/32/33620_2.png) [@jishnub](https://discourse.julialang.org/u/jishnub)\
**Post date:** [May 5, 2023, 8:06am UTC](https://discourse.julialang.org/t/comparition-of-timing-v1-9-vs-v1-8-and-how-to-get-this-precompilation-in-my-own-packages/98372/3 "2023-05-05T08:06:11Z")

</div>

> [@sylvaticus](#):
>
> does it need to be somehow enabled in the package ?

In general, yes, using [PrecompileTools.jl](https://github.com/JuliaLang/PrecompileTools.jl)

---

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [May 5, 2023, 8:10am UTC](https://discourse.julialang.org/t/comparition-of-timing-v1-9-vs-v1-8-and-how-to-get-this-precompilation-in-my-own-packages/98372/4 "2023-05-05T08:10:54Z")

</div>

yep, just tried on my unmodified package, julia 1.9 is about twice as fast to run the first call to my functions, but not 7 times faster as in Plots.jl… going to look, thanks…

---

<div class="post-metadata">

**Author:** ![jishnub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jishnub/32/33620_2.png) [@jishnub](https://discourse.julialang.org/u/jishnub)\
**Post date:** [May 5, 2023, 8:13am UTC](https://discourse.julialang.org/t/comparition-of-timing-v1-9-vs-v1-8-and-how-to-get-this-precompilation-in-my-own-packages/98372/5 "2023-05-05T08:13:58Z")

</div>

Yes, getting a fast runtime performance also often requires fixing invalidations that might exist in a package (see [Snooping on and fixing invalidations: @snoopr · SnoopCompile](https://timholy.github.io/SnoopCompile.jl/stable/snoopr/)), as well as improving type-inference by avoiding code patterns such as recursions involving changing types, which seems to trip the compiler
