# Blog post: Julia's latency: Past, present and future

**URL:** <https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910>\
**Category:** Community\
**Created:** [March 31, 2023, 7:07pm UTC](https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910 "2023-03-31T19:07:45Z")\
**Posts on this page:** 14\
**Page:** 2

<div class="post-metadata">

**Author:** ![fatteneder](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fatteneder/32/33991_2.png) [@fatteneder](https://discourse.julialang.org/u/fatteneder)\
**Post date:** [April 1, 2023, 7:40pm UTC](https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910/21 "2023-04-01T19:40:32Z")

</div>

For what it’s worth, there is a proposal for a redesign which could enable redefinition of types, according to the author.

> **[RFC: First class bindings, GlobalRef unification, TLS improvements ·...](https://github.com/JuliaLang/julia/discussions/48843)**
>
> This is a design overview that combines a few threads that have been discussed recently, including the GlobalRef-Binding unification (briefly touched upon in #46729 and probably something we want t...

---

<div class="post-metadata">

**Author:** ![dlfivefifty](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlfivefifty/32/1959_2.png) [@dlfivefifty](https://discourse.julialang.org/u/dlfivefifty)\
**Post date:** [April 1, 2023, 7:57pm UTC](https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910/22 "2023-04-01T19:57:01Z")

</div>

> Prior to 1.9 it precompilation cached typed IR (after running type inference and Julia optimizations). In 1.9, it’s native code.

Thanks for posting this comment! I used to have precompile statements in eg BandedMatrices.jl but at one point I got rid of them as I realised that the benefits were very small. But it sounds like the game has changed with 1.9?

---

<div class="post-metadata">

**Author:** ![Oscar\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscar_smith/32/25343_2.png) [@Oscar\_Smith](https://discourse.julialang.org/u/Oscar_Smith)\
**Post date:** [April 1, 2023, 9:00pm UTC](https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910/23 "2023-04-01T21:00:38Z")

</div>

Yeah. Computation heavy packages massively improve with 1.9. For example, the first matmul time (not including load time) in Julia 1.9 is 0.2 seconds compared to 1. seconds in 1.8

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [April 1, 2023, 9:41pm UTC](https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910/24 "2023-04-01T21:41:57Z")

</div>

> [@tim.holy](#):
>
> just recommend Cthulhu

One really helpful thing there would probably to rename that package. Even though I can remember that it exists, I can certainly never remember the exact name (all I can remember is "something that starts with c and then who knows), how to spell it or pronounce it. As silly as this is, I think an easier name would make the package quite a bit less scary and more discoverable for more users.

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [April 1, 2023, 9:44pm UTC](https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910/25 "2023-04-01T21:44:59Z")

</div>

Especially given the background. Look it up on the web and it promises “a gigantic entity worshipped by cultists”.

---

<div class="post-metadata">

**Author:** ![adienes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/adienes/32/37459_2.png) [@adienes](https://discourse.julialang.org/u/adienes)\
**Post date:** [April 1, 2023, 9:53pm UTC](https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910/26 "2023-04-01T21:53:32Z")

</div>

just some subjective counterpoint; I enjoy whimsical names 🙂 , I would be a teense sad to see `Cthulhu.jl` renamed to another generic `InferenceInspector.jl` or what have you

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [April 1, 2023, 10:15pm UTC](https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910/27 "2023-04-01T22:15:45Z")

</div>

> [@davidanthoff](#):
>
> Even though I can remember that it exists, I can certainly never remember the exact name (all I can remember is "something that starts with c and then who knows),

I thought this Lovecraft stuff had gone fully mainstream. The spelling can easily throw you, though.

---

<div class="post-metadata">

**Author:** ![NiclasMattsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/niclasmattsson/32/21988_2.png) [@NiclasMattsson](https://discourse.julialang.org/u/NiclasMattsson)\
**Post date:** [April 2, 2023, 1:14am UTC](https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910/28 "2023-04-02T01:14:22Z")

</div>

A package rename might be defensible as Cthulhu stabilizes, because it might no longer be “The slow descent into madness” but instead “A gentle meditation to enlightenment”. So maybe TypeGuru.jl? Typefulness.jl? Or if descriptive is preferred over whimsy, perhaps TypeIntrospection.jl or just Introspection.jl?

---

<div class="post-metadata">

**Author:** ![Benny](https://avatars.discourse-cdn.com/v4/letter/b/49beb7/32.png) [@Benny](https://discourse.julialang.org/u/Benny)\
**Post date:** [April 2, 2023, 3:59am UTC](https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910/29 "2023-04-02T03:59:43Z")

</div>

> [@jakobnissen](#):
>
> Not adding type annotations is fine. The issue is when you add new methods that are _semantically_ too broad. In this example:
> 
> 1. adding constructors to whole groups of types you don’t know anything about
> 2. Adding a convert method to types you don’t know the semantics of.

What are the exact bad consequences of this? The blog’s example annotates an argument with `::MyType` so it doesn’t seem like type piracy that would interfere with code outside your `MyType` package. I can see that sort of code hitting a bunch of `MethodError`s at the overly wide variety of input types, but I don’t understand how it relates to latency, the way type piracy, poor inferability, and excessive dependencies were explained.

---

<div class="post-metadata">

**Author:** ![bilderbuchi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bilderbuchi/32/13562_2.png) [@bilderbuchi](https://discourse.julialang.org/u/bilderbuchi)\
**Post date:** [April 2, 2023, 6:54am UTC](https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910/30 "2023-04-02T06:54:33Z")

</div>

For a slight change of tack (and author), I propose “[TellTaleHeart](https://en.m.wikipedia.org/wiki/The_Tell-Tale_Heart).jl”, then, because the package helps in telling where the (performance) skeletons are buried. 😅

---

<div class="post-metadata">

**Author:** ![liuyxpp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/liuyxpp/32/9870_2.png) [@liuyxpp](https://discourse.julialang.org/u/liuyxpp)\
**Post date:** [April 2, 2023, 8:27am UTC](https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910/31 "2023-04-02T08:27:09Z")

</div>

I can not agree more with this point. I tried to remember the word several times. Each time I failed! Bang!

---

<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:** [April 2, 2023, 10:22am UTC](https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910/32 "2023-04-02T10:22:35Z")

</div>

> [@dlfivefifty](#):
>
> I used to have precompile statements in eg BandedMatrices.jl but at one point I got rid of them as I realised that the benefits were very small. But it sounds like the game has changed with 1.9?

In the `BandedMatrices` context, the gains were visible in [Precompile basic algebra operations by jishnub · Pull Request #283 · JuliaLinearAlgebra/BandedMatrices.jl · GitHub](https://github.com/JuliaLinearAlgebra/BandedMatrices.jl/pull/283#issuecomment-1379893550), where the latency in basic algebra operations were eliminated almost entirely.

---

<div class="post-metadata">

**Author:** ![Henrique\_Becker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/henrique_becker/32/15443_2.png) [@Henrique\_Becker](https://discourse.julialang.org/u/Henrique_Becker)\
**Post date:** [April 2, 2023, 2:18pm UTC](https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910/33 "2023-04-02T14:18:45Z")

</div>

Yeah, I would also be sad at the renaming. For me, having it called `Cthulhu.jl` makes it much more memorable. I have a much bigger problem with generic names in which some noun or adjective of the name is replaced by some synonym in my mind.

---

<div class="post-metadata">

**Author:** ![Palli](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/palli/32/3380_2.png) [@Palli](https://discourse.julialang.org/u/Palli)\
**Post date:** [April 20, 2023, 9:05pm UTC](https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910/34 "2023-04-20T21:05:51Z")

</div>

> [@Olivier\_Merchiers](#):
>
> Are there plans to replace the output of `@code_warntype ` in base by what `@descend` gives?

I don’t know, doubt it, the trend is slimming the sysimage/Base. And this is only used interactively by developers.

@davidanthoff How about a trivial (doc) change (would it even be ok for 1.9?):

```julia
julia> @code_warntype 1+1
MethodInstance for +(::Int64, ::Int64) NOTE, a better tool to use is @descend from Cthulhu.jl package
[..]

```

[And eventually deprecate it, and just show the hint?]

Are these `code_*` macros ever used unless interactively? I’m thinking, is it even ok to add hints to the (bottom) of `@code_native` (the one I use most) output, or would the output be parsed by some code, and the change would screw it up?

[Previous page](https://discourse.julialang.org/t/blog-post-julias-latency-past-present-and-future/96910.md?page=1)
