Skip to content

Commit f3dac8c

Browse files
committed
Use pairs() in findmax(a)
It's about as fast as working on indexes for arrays, and should be faster for other collections. Thanks again to @tkf.
1 parent 51c1d07 commit f3dac8c

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

base/reduce.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -810,6 +810,9 @@ julia> findmax([1, 7, 7, NaN])
810810
findmax(f, domain) = mapfoldl(x -> (f(x), x), _rf_findmax, domain)
811811
_rf_findmax((fm, m), (fx, x)) = isless(fm, fx) ? (fx, x) : (fm, m)
812812

813+
findmax(a) = _findmax(a, :)
814+
_findmax(a, ::Colon) = mapfoldl( ((k, v),) -> (v, k), _rf_findmax, pairs(a) )
815+
813816
"""
814817
findmin(f, domain) -> (f(x), x)
815818
findmin(f)
@@ -856,11 +859,8 @@ julia> findmin([1, 7, 7, NaN])
856859
findmin(f, domain) = mapfoldl(x -> (f(x), x), _rf_findmin, domain)
857860
_rf_findmin((fm, m), (fx, x)) = isgreater(fm, fx) ? (fx, x) : (fm, m)
858861

859-
findmax(a) = _findmax(a, :)
860-
_findmax(a, ::Colon) = findmax(idx -> a[idx], keys(a))
861-
862862
findmin(a) = _findmin(a, :)
863-
_findmin(a, ::Colon) = findmin(idx -> a[idx], keys(a))
863+
_findmin(a, ::Colon) = mapfoldl( ((k, v),) -> (v, k), _rf_findmin, pairs(a) )
864864

865865
"""
866866
argmax(f, domain)

0 commit comments

Comments
 (0)