From 5ab408321dd45865a88fed71d11efe01dd7715d9 Mon Sep 17 00:00:00 2001 From: Douglas Rumbaugh Date: Mon, 24 Jul 2023 18:17:57 -0400 Subject: VPTree: added a level of indirection to avoid repeated point copies --- tests/vptree_tests.cpp | 43 +++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 18 deletions(-) (limited to 'tests/vptree_tests.cpp') diff --git a/tests/vptree_tests.cpp b/tests/vptree_tests.cpp index 894e64a..06f147b 100644 --- a/tests/vptree_tests.cpp +++ b/tests/vptree_tests.cpp @@ -137,31 +137,38 @@ START_TEST(t_buffer_query) START_TEST(t_knn_query) { - size_t n = 100; + size_t n = 1000; auto buffer = create_2d_sequential_mbuffer(n); - PRec target; - target.data[0] = 50; - target.data[1] = 50; + auto vptree = VPTree(buffer); KNNQueryParms p; - p.k = 10; - p.point = target; + for (size_t i=0; i<100; i++) { + p.k = rand() % 150; + p.point.data[0] = rand() % (n-p.k); + p.point.data[1] = p.point.data[0]; - auto state = KNNQuery::get_buffer_query_state(buffer, &p); - auto result = KNNQuery::buffer_query(buffer, state, &p); + auto state = KNNQuery::get_query_state(&vptree, &p); + auto results = KNNQuery::query(&vptree, state, &p); + KNNQuery::delete_query_state(state); - KNNQuery::delete_buffer_query_state(state); + ck_assert_int_eq(results.size(), p.k); - auto vptree = VPTree(buffer); - auto state_2 = KNNQuery::get_query_state(&vptree, &p); - auto result_2 = KNNQuery::query(&vptree, state_2, &p); - KNNQuery::delete_query_state(state_2); - - std::sort(result_2.begin(), result_2.end()); - size_t start = 46; - for (size_t i=0; i