# Where is load-time spent (with skipped precompilation)

**URL:** <https://discourse.julialang.org/t/where-is-load-time-spent-with-skipped-precompilation/89201>\
**Category:** Performance\
**Created:** [October 24, 2022, 5:41pm UTC](https://discourse.julialang.org/t/where-is-load-time-spent-with-skipped-precompilation/89201 "2022-10-24T17:41:28Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![tfiers](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tfiers/32/32427_2.png) [@tfiers](https://discourse.julialang.org/u/tfiers)\
**Post date:** [October 25, 2022, 12:30am UTC](https://discourse.julialang.org/t/where-is-load-time-spent-with-skipped-precompilation/89201/2 "2022-10-25T00:30:03Z")

</div>

Answering myself: I profiled with [SnoopCompile](https://timholy.github.io/SnoopCompile.jl/stable/snoopi_deep/):

```julia
using SnoopCompile, ProfileView
tinf = @snoopi_deep (using VoltoMapSim)
ProfileView.view(flamegraph(tinf));

```

Turns out, a lot of this import time is spent in compiling expanded **macro calls** :

- `@match` (Match.jl)
- `@showprogress` (ProgressMeter.jl)
- `@with_kw` (Parameters.jl)
- `f"Python-style f-string {x:.2f}"` (PyFormattedStrings.jl)
- `@set` (Setfield.jl)

Plus:

- `ComponentVector(; myname=1, othername=2, …)` (ComponentArrays.jl)
- `PyCall.setindex!(::PyDict{…}, …)` (PyPlot.jl)
- a bunch of custom `Tuple` and `NamedTuple` constructions

I’ll see if I can get rid of some of those / maybe precompile them in an upstream less-updated package.

---

_[View the full topic](https://discourse.julialang.org/t/where-is-load-time-spent-with-skipped-precompilation/89201)._
