# Why is LoopVectorization deprecated?

**URL:** https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547
**Category:** Performance
**Tags:** loopvectorization
**Created:** [February 1, 2024, 2:13am UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547 "2024-02-01T02:13:46Z")
**Posts on this page:** 1
**Showing post:** 102

<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: [April 2, 2024, 12:06am UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/102 "2024-04-02T00:06:15Z")

</div>

I’m not sure how general this is, but here is one example of “manual” loop vectorization:

> [@Julia & Mojo Mandelbrot Benchmark](https://discourse.julialang.org/t/julia-mojo-mandelbrot-benchmark/103638/16):
>
> This one runs 5x 8x faster then the original julia example posted here, and illustrates nicely how something like ComplexSIMD can be defined quite easily in Julia: const xn = 960 const yn = 960 const xmin = -2.0 const xmax = 0.6 const ymin = -1.5 const ymax = 1.5 const MAX\_ITERS = 200 struct ComplexSIMD{N,T} re::NTuple{N,T} im::NTuple{N,T} end Base.abs2(z::ComplexSIMD) = z.re .\* z.re .+ z.im .\* z.im Base.:(\*)(a::ComplexSIMD, b::ComplexSIMD) = ComplexSIMD( a.re .\* b.re .- a.im .\* b…

Probably, for the time being, people wanting to recover the performance of LV should study how to do something of the sort in their own problems.

---

_[View the full topic](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547)._
