Huge performance optimization: re-use the distances computed when making a recurrence matrix #143
Labels
good first issue
An easy issue, suitable for new contributors.
high priority
This needs to be done soon!
performance
Alright, we stand to gain MASSIVE, 2x, performance benefit here for all
RecurrenceType
s exceptRecurrenceThreshold
. Take a look at our source code that computes the recurrence threshold for a given type: https://github.com/JuliaDynamics/RecurrenceAnalysis.jl/blob/main/src/matrices/recurrence_specification.jl#L78-L153For all types (besides
RecurrenceThreshold
) we are computing all the distances across all pairs of points, to estimate a threshold. Then, we give this threshold to the low-levelrecurrence_matrix
function which computes all distances all over again. We can be much smarter than that and just store somewhere the distance matrtix and pass it around until we reach therecurrence_matrix
function, which then does a trivial boolean conversionrmat = dmat .< threhold; return SparseMatrix(rmat)
.This is such a simple code base improvement with such a massive impact.
The text was updated successfully, but these errors were encountered: