The performance of
findfirst(A, value) has significantly been affected in 0.7. It’s understandable that the method is deprecated. But changing the functionality in a manner that performance is substantially affected can be a significant issue for applications where it has been used. Here are some numbers from 0.6 and 0.7 for comparison.
julia> a = fill(1, 2048); @time findfirst(a, 5) 0.000004 seconds (4 allocations: 160 bytes) 0
julia> a = fill(1, 2048); @time findfirst(a, 4) ┌ Warning: `findfirst(A, v)` is deprecated, use `coalesce(findfirst(isequal(v), A), 0)` instead. │ caller = top-level scope at util.jl:156 └ @ Core util.jl:156 0.002726 seconds (372 allocations: 23.250 KiB) 0
The sheer number of allocations are good enough indication that there is lots more happening within the method now in 0.7. Because of this some code is almost crawling in their 0.7 implementation which were fairly fast in 0.6.
Please note that the measurements are after several runs so initial start up overheads have been eliminated already.