# Best practices to reduce allocations in Julia

**URL:** <https://discourse.julialang.org/t/best-practices-to-reduce-allocations-in-julia/104158>\
**Category:** Performance\
**Created:** [September 22, 2023, 4:11pm UTC](https://discourse.julialang.org/t/best-practices-to-reduce-allocations-in-julia/104158 "2023-09-22T16:11:32Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jian\_ZUO](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jian_zuo/32/33738_2.png) [@Jian\_ZUO](https://discourse.julialang.org/u/Jian_ZUO)\
**Post date:** [September 22, 2023, 4:11pm UTC](https://discourse.julialang.org/t/best-practices-to-reduce-allocations-in-julia/104158/1 "2023-09-22T16:11:32Z")

</div>

Hi all,  
I have a relatively big simulation function (which has 20,000 repeated loops).  
The @time results show more than 64.5G allocations.  
Are there some tips to reduce the allocations?

Thank you in advance.

---

<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:** [September 22, 2023, 4:17pm UTC](https://discourse.julialang.org/t/best-practices-to-reduce-allocations-in-julia/104158/2 "2023-09-22T16:17:44Z")

</div>

See [Performance Tips · The Julia Language](https://docs.julialang.org/en/v1/manual/performance-tips/). Specifically, check for type instability and slicing as the two most likely.

---

<div class="post-metadata">

**Author:** ![Jian\_ZUO](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jian_zuo/32/33738_2.png) [@Jian\_ZUO](https://discourse.julialang.org/u/Jian_ZUO)\
**Post date:** [September 22, 2023, 4:24pm UTC](https://discourse.julialang.org/t/best-practices-to-reduce-allocations-in-julia/104158/3 "2023-09-22T16:24:16Z")

</div>

Thank you very much for the advice!

---

<div class="post-metadata">

**Author:** ![lmiq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lmiq/32/18314_2.png) [@lmiq](https://discourse.julialang.org/u/lmiq)\
**Post date:** [September 22, 2023, 6:02pm UTC](https://discourse.julialang.org/t/best-practices-to-reduce-allocations-in-julia/104158/4 "2023-09-22T18:02:32Z")

</div>

Also: [Common allocation mistakes](https://discourse.julialang.org/t/common-allocation-mistakes/66127)

---

<div class="post-metadata">

**Author:** ![Jian\_ZUO](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jian_zuo/32/33738_2.png) [@Jian\_ZUO](https://discourse.julialang.org/u/Jian_ZUO)\
**Post date:** [September 22, 2023, 9:38pm UTC](https://discourse.julialang.org/t/best-practices-to-reduce-allocations-in-julia/104158/5 "2023-09-22T21:38:36Z")

</div>

This is helpful, thank you very much @lmiq

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [September 23, 2023, 2:26am UTC](https://discourse.julialang.org/t/best-practices-to-reduce-allocations-in-julia/104158/6 "2023-09-23T02:26:43Z")

</div>

In my simulation [https://github.com/ufechner7/KiteModels.jl/blob/main/src/KPS4.jl](https://github.com/ufechner7/KiteModels.jl/blob/main/src/KPS4.jl) I have zero allocation. Line 386ff, is the main callback function.

```julia
function residual!(res, yd, y::MVector{S, SimFloat}, s::KPS4, time) where S

```

I use this struct

```julia
@with_kw mutable struct KPS4{S, T, P, Q, SP} <: AbstractKiteModel

```

as first parameter of most functions which holds the work arrays. It is alllocated only once at the start of the program.

In most cases I use SVectors and MVectors, but only for Vectors with  
less than 100 elements.

Perhaps this gives you some ideas…

---

<div class="post-metadata">

**Author:** ![Jian\_ZUO](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jian_zuo/32/33738_2.png) [@Jian\_ZUO](https://discourse.julialang.org/u/Jian_ZUO)\
**Post date:** [September 23, 2023, 7:59am UTC](https://discourse.julialang.org/t/best-practices-to-reduce-allocations-in-julia/104158/7 "2023-09-23T07:59:42Z")

</div>

Thank you very much @ufechner7 , going to check your code.
