From 51fd953d653762f1825003cfa2dcae31e5360ab2 Mon Sep 17 00:00:00 2001 From: Ulrich Bauer Date: Thu, 31 Dec 2020 18:23:48 +0100 Subject: undo performance-degrading change --- ripser.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/ripser.cpp b/ripser.cpp index b377d49..2deb58a 100644 --- a/ripser.cpp +++ b/ripser.cpp @@ -265,6 +265,9 @@ struct sparse_distance_matrix { index_t num_edges; + mutable std::vector::const_reverse_iterator> neighbor_it; + mutable std::vector::const_reverse_iterator> neighbor_end; + sparse_distance_matrix(std::vector>&& _neighbors, index_t _num_edges) : neighbors(std::move(_neighbors)), num_edges(_num_edges) {} @@ -778,8 +781,8 @@ template <> class ripser::simplex_coboundary_enumerator const coefficient_t modulus; const sparse_distance_matrix& dist; const binomial_coeff_table& binomial_coeff; - std::vector::const_reverse_iterator> neighbor_it; - std::vector::const_reverse_iterator> neighbor_end; + std::vector::const_reverse_iterator>& neighbor_it; + std::vector::const_reverse_iterator>& neighbor_end; index_diameter_t neighbor; public: @@ -787,7 +790,10 @@ public: const ripser& _parent) : idx_below(get_index(_simplex)), idx_above(0), k(_dim + 1), vertices(_dim + 1), simplex(_simplex), modulus(_parent.modulus), dist(_parent.dist), - binomial_coeff(_parent.binomial_coeff) { + binomial_coeff(_parent.binomial_coeff), neighbor_it(dist.neighbor_it), + neighbor_end(dist.neighbor_end) { + neighbor_it.clear(); + neighbor_end.clear(); _parent.get_simplex_vertices(idx_below, _dim, _parent.n, vertices.rbegin()); for (auto v : vertices) { -- cgit v1.2.3