]> git.itanic.dy.fi Git - sdl-planets/commitdiff
quadtree: export rebalance statistics
authorTimo Kokkonen <kaapeli@itanic.dy.fi>
Sat, 30 Jul 2011 13:30:54 +0000 (16:30 +0300)
committerTimo Kokkonen <kaapeli@itanic.dy.fi>
Sat, 30 Jul 2011 13:30:54 +0000 (16:30 +0300)
These variables can be used to examine how many times tree rebalance
events have taken place and how many nodes were moved during the
rebalances.

Signed-off-by: Timo Kokkonen <kaapeli@itanic.dy.fi>
quadtree.c
quadtree.h

index 9d5c56d6a6039c778c4aec6557c627eb2fd7b68d..5c712f7ddeaf1eaf4be4f94e455d8b55ac9699b1 100644 (file)
@@ -3,6 +3,9 @@
 
 #include "quadtree.h"
 
+long int quadtree_rebalance_events;
+long int quadtree_rebalanced_nodes;
+
 #ifdef DEBUG
 #define debug 1
 #else
@@ -890,9 +893,11 @@ struct quadtree *quadtree_move(struct quadtree *node, struct vector new_pos,
                 * tree.
                 */
                validate_tree(node);
+               quadtree_rebalanced_nodes += node->children;
                tree_parent = quadtree_del(node, ops);
                node->pos = new_pos;
                quadtree_add(tree_parent, node, ops);
+               quadtree_rebalance_events++;
                validate_tree(node);
 
                return tree_parent;
index 6959beaa4af18f6190f689e10306e1d8636b52aa..101d43a6ddd5d362876b27259dc9476fd3ea932b 100644 (file)
@@ -76,4 +76,7 @@ static inline struct quadtree *quadtree_find_parent(const struct quadtree *node)
        return t;
 }
 
+extern long int quadtree_rebalance_events;
+extern long int quadtree_rebalanced_nodes;
+
 #endif