# Optimizing Direct 1D Convolution Code

**URL:** <https://discourse.julialang.org/t/optimizing-direct-1d-convolution-code/97658>\
**Category:** Performance\
**Tags:** simd, speed-optimization, convolution\
**Created:** [April 19, 2023, 2:00pm UTC](https://discourse.julialang.org/t/optimizing-direct-1d-convolution-code/97658 "2023-04-19T14:00:12Z")\
**Posts on this page:** 2\
**Page:** 2

<div class="post-metadata">

**Author:** ![Dan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dan/32/42581_2.png) [@Dan](https://discourse.julialang.org/u/Dan)\
**Post date:** [April 28, 2023, 2:01pm UTC](https://discourse.julialang.org/t/optimizing-direct-1d-convolution-code/97658/21 "2023-04-28T14:01:16Z")

</div>

> [@RoyiAvital](#):
>
> `oa = ib0 ? vA[ii - kk + 1] : zero(T);`

Side question: is the difference between `? :` and `ifelse` optimized away because of `zero(T)` being a pure function in this case?

---

<div class="post-metadata">

**Author:** ![Elrod](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/elrod/32/22461_2.png) [@Elrod](https://discourse.julialang.org/u/Elrod)\
**Post date:** [April 28, 2023, 2:53pm UTC](https://discourse.julialang.org/t/optimizing-direct-1d-convolution-code/97658/22 "2023-04-28T14:53:46Z")

</div>

No. `ifelse` might segfault when you read out of bounds.  
`?` turns into a masked (SIMD) load.

[Previous page](https://discourse.julialang.org/t/optimizing-direct-1d-convolution-code/97658.md?page=1)
