-
Notifications
You must be signed in to change notification settings - Fork 70
use ArrayOfArrays for return value to reduce the number of allocated arrays #167
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
6d5edc2
to
cb71f4c
Compare
@nanosoldier |
The package evaluation job you requested has completed - possible new issues were detected. |
1748083
to
92766f7
Compare
64944b1
to
f34aa27
Compare
…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) ```
@nanosoldier |
The package evaluation job you requested has completed - possible new issues were detected. Report summary✖ Packages that failed3 packages failed only on the current version.
40 packages failed on the previous version too. ✔ Packages that passed tests1 packages passed tests only on the current version.
59 packages passed tests on the previous version too. ➖ Packages that were skipped altogether19 packages were skipped on the previous version too. |
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: