# Why is minimum so much faster than argmin?

**URL:** <https://discourse.julialang.org/t/why-is-minimum-so-much-faster-than-argmin/66814>\
**Category:** Performance\
**Created:** [August 22, 2021, 7:43pm UTC](https://discourse.julialang.org/t/why-is-minimum-so-much-faster-than-argmin/66814 "2021-08-22T19:43:50Z")\
**Posts on this page:** 1\
**Showing post:** 11

<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:** [August 23, 2021, 11:37am UTC](https://discourse.julialang.org/t/why-is-minimum-so-much-faster-than-argmin/66814/11 "2021-08-23T11:37:11Z")

</div>

For fun

```julia
using LoopVectorization, BenchmarkTools
function findmin_turbo(x)
  indmin = 0
  minval = typemax(eltype(x))
  @turbo for i ∈ eachindex(x)
    newmin = x[i] < minval
    minval = newmin ? x[i] : minval
    indmin = newmin ? i : indmin
  end
  minval, indmin
end
y = rand(1000);
@btime findmin_turbo($y)
@btime findmin($y)
@btime minimum($y)
@btime argmin($y)

```

I get:

```julia
julia> y = rand(1000);

julia> @btime findmin_turbo($y)
  99.998 ns (0 allocations: 0 bytes)
(0.00021165397762579197, 79)

julia> @btime findmin($y)
  2.984 μs (0 allocations: 0 bytes)
(0.00021165397762579197, 79)

julia> @btime minimum($y)
  744.863 ns (0 allocations: 0 bytes)
0.00021165397762579197

julia> @btime argmin($y)
  2.954 μs (0 allocations: 0 bytes)
79

julia> versioninfo()
Julia Version 1.8.0-DEV.383
Commit eb83c4d25b* (2021-08-20 20:03 UTC)
Platform Info:
  OS: Linux (x86_64-redhat-linux)
  CPU: 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz

```

This requires LoopVectorization `>= v0.12.66`.

---

_[View the full topic](https://discourse.julialang.org/t/why-is-minimum-so-much-faster-than-argmin/66814)._
