# How to accelerate matrix operations(multiplication, add, inverse) in a for loop?

**URL:** <https://discourse.julialang.org/t/how-to-accelerate-matrix-operations-multiplication-add-inverse-in-a-for-loop/14157>\
**Category:** Performance\
**Tags:** performance, matlab\
**Created:** [August 27, 2018, 10:08pm UTC](https://discourse.julialang.org/t/how-to-accelerate-matrix-operations-multiplication-add-inverse-in-a-for-loop/14157 "2018-08-27T22:08:51Z")\
**Posts on this page:** 4\
**Page:** 2

<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:** [August 29, 2018, 1:38pm UTC](https://discourse.julialang.org/t/how-to-accelerate-matrix-operations-multiplication-add-inverse-in-a-for-loop/14157/23 "2018-08-29T13:38:46Z")

</div>

> [@Seif\_Shebl](#):
>
> Julia is not good at working with slices and allocations of too many matrices and vectors

I think you are basically right in your remarks, but we should avoid creating a misunderstanding here. Julia can do slices and vectorization etc. etc. just fine. But in Matlab you do it because you _have to_. In Julia you don’t, and you can do _much better_.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [August 29, 2018, 2:29pm UTC](https://discourse.julialang.org/t/how-to-accelerate-matrix-operations-multiplication-add-inverse-in-a-for-loop/14157/24 "2018-08-29T14:29:56Z")

</div>

2 posts were split to a new topic: [Julia vs Matlab side thread](https://discourse.julialang.org/t/julia-vs-matlab-side-thread/14244)

---

<div class="post-metadata">

**Author:** ![sysk\_msk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sysk_msk/32/6945_2.png) [@sysk\_msk](https://discourse.julialang.org/u/sysk_msk)\
**Post date:** [August 29, 2018, 2:38pm UTC](https://discourse.julialang.org/t/how-to-accelerate-matrix-operations-multiplication-add-inverse-in-a-for-loop/14157/25 "2018-08-29T14:38:03Z")

</div>

Thank you so much!

---

<div class="post-metadata">

**Author:** ![Gnimuc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gnimuc/32/2194_2.png) [@Gnimuc](https://discourse.julialang.org/u/Gnimuc)\
**Post date:** [September 2, 2018, 6:35am UTC](https://discourse.julialang.org/t/how-to-accelerate-matrix-operations-multiplication-add-inverse-in-a-for-loop/14157/26 "2018-09-02T06:35:49Z")

</div>

Hi all, I cleaned up the code a little bit, it turns out the bottleneck is at this line:

`corr = (noisyPatch[px,py] ⋅ b) / noisyPatchNorm[px,py]`

any idea on how to optimize this?

> <https://gist.github.com/Gnimuc/91ed3f089126feb55b9f9382084854d5>

[Previous page](https://discourse.julialang.org/t/how-to-accelerate-matrix-operations-multiplication-add-inverse-in-a-for-loop/14157.md?page=1)
