You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
use ArrayOfArrays for return value to reduce the number of allocated arrays
A long standing gripe for me has been that indices and distances are
returned as standard nested `Array`s. Typically, each inner array hold
quite a small number of neighbors so it means that we allocate a large
number of small arrays.
Using ArrayOfArrays, these are stored contigously in one large flat
array instead.
The difference in allocations can be readily seen:
```julia
julia> input = rand(3, 10^6);
julia> tree = KDTree(rand(3, 10^6));
julia> @time knn(tree, input, 5);
1.538003 seconds (2.00 M allocations: 221.253 MiB, 10.03% gc time)
julia> @time knn(tree, input, 5);
1.489310 seconds (98 allocations: 189.884 MiB, 0.29% gc time)
```
0 commit comments