MOAB: Mesh Oriented datABase
(version 5.4.1)
|
Traversal statistics accumulating and reporting. More...
#include <TreeStats.hpp>
Public Member Functions | |
TreeStats () | |
constructor | |
ErrorCode | compute_stats (Interface *impl, EntityHandle root_node) |
Given a root node, compute the stats for a tree. | |
void | reset_trav_stats () |
reset traversal counters | |
void | reset () |
reset all counters | |
void | print () const |
print the contents of this structure | |
void | output_all_stats (const bool with_endl=true) const |
output all the contents of this structure on a single line | |
void | output_trav_stats (const bool with_endl=true) const |
output just the traversal stats of this structure on a single line | |
Public Attributes | |
double | initTime |
unsigned int | maxDepth |
unsigned int | numNodes |
unsigned int | numLeaves |
double | avgObjPerLeaf |
unsigned int | minObjPerLeaf |
unsigned int | maxObjPerLeaf |
unsigned int | nodesVisited |
unsigned int | leavesVisited |
unsigned int | numTraversals |
unsigned int | constructLeafObjectTests |
unsigned int | traversalLeafObjectTests |
unsigned int | boxElemTests |
Private Member Functions | |
ErrorCode | traverse (Interface *impl, EntityHandle node, unsigned int &depth) |
Traversal statistics accumulating and reporting.
Class to accumulate statistics on traversal performance. This structure contains the count of nodes visited at each level in a tree, and the count of traversals that ended at each level. One TrvStats structure can be used with multiple trees or multiple queries, or used on only a single tree or a single query.
Note that these traversal statistics are not related to the stats() query below, which calculates static information about a tree. These statistics relate to a tree's dynamic behavior on particular operations.
Definition at line 26 of file TreeStats.hpp.
moab::TreeStats::TreeStats | ( | ) | [inline] |
ErrorCode moab::TreeStats::compute_stats | ( | Interface * | impl, |
EntityHandle | root_node | ||
) | [inline] |
Given a root node, compute the stats for a tree.
impl | MOAB instance pointer |
root_node | Root entity set for the tree |
Definition at line 81 of file TreeStats.hpp.
References avgObjPerLeaf, ErrorCode, maxDepth, maxObjPerLeaf, minObjPerLeaf, numLeaves, numNodes, and traverse().
Referenced by moab::AdaptiveKDTree::build_tree(), and moab::BVHTree::build_tree().
{ maxDepth = 0; numNodes = 0; numLeaves = 0; avgObjPerLeaf = 0.0; minObjPerLeaf = 0; maxObjPerLeaf = 0; ErrorCode rval = traverse( impl, root_node, maxDepth ); avgObjPerLeaf = ( avgObjPerLeaf > 0 ? avgObjPerLeaf / (double)numLeaves : 0.0 ); return rval; }
void moab::TreeStats::output_all_stats | ( | const bool | with_endl = true | ) | const [inline] |
output all the contents of this structure on a single line
Definition at line 170 of file TreeStats.hpp.
References avgObjPerLeaf, boxElemTests, constructLeafObjectTests, initTime, leavesVisited, maxDepth, maxObjPerLeaf, minObjPerLeaf, nodesVisited, numLeaves, numNodes, numTraversals, and traversalLeafObjectTests.
Referenced by main().
{ std::cout << initTime << " " << numNodes << " " << numLeaves << " " << maxDepth << " " << avgObjPerLeaf << " " << minObjPerLeaf << " " << maxObjPerLeaf << " " << constructLeafObjectTests << " " << boxElemTests << " " << nodesVisited << " " << leavesVisited << " " << numTraversals << " " << traversalLeafObjectTests << " "; if( with_endl ) std::cout << std::endl; }
void moab::TreeStats::output_trav_stats | ( | const bool | with_endl = true | ) | const [inline] |
output just the traversal stats of this structure on a single line
Definition at line 178 of file TreeStats.hpp.
References leavesVisited, nodesVisited, numTraversals, and traversalLeafObjectTests.
Referenced by test_locator().
{ std::cout << nodesVisited << " " << leavesVisited << " " << numTraversals << " " << traversalLeafObjectTests << " "; if( with_endl ) std::cout << std::endl; }
void moab::TreeStats::print | ( | ) | const [inline] |
print the contents of this structure
Definition at line 149 of file TreeStats.hpp.
References avgObjPerLeaf, boxElemTests, constructLeafObjectTests, initTime, leavesVisited, maxDepth, maxObjPerLeaf, minObjPerLeaf, nodesVisited, numLeaves, numNodes, numTraversals, and traversalLeafObjectTests.
Referenced by DeformMeshRemap::execute().
{ std::cout << "Tree initialization time = " << initTime << " seconds" << std::endl; std::cout << "Num nodes = " << numNodes << std::endl; std::cout << "Num leaves = " << numLeaves << std::endl; std::cout << "Max depth = " << maxDepth << std::endl << std::endl; std::cout << "Avg objs per leaf = " << avgObjPerLeaf << std::endl; std::cout << "Min objs per leaf = " << minObjPerLeaf << std::endl; std::cout << "Max objs per leaf = " << maxObjPerLeaf << std::endl; std::cout << "Construction Leaf Object Tests = " << constructLeafObjectTests << std::endl; std::cout << "Box-Element Tests = " << boxElemTests << std::endl; std::cout << "NodesVisited = " << nodesVisited << std::endl; std::cout << "LeavesVisited = " << leavesVisited << std::endl; std::cout << "Num Traversals = " << numTraversals << std::endl; std::cout << "Traversal Leaf Object Tests = " << traversalLeafObjectTests << std::endl; }
void moab::TreeStats::reset | ( | ) | [inline] |
reset all counters
Definition at line 125 of file TreeStats.hpp.
References avgObjPerLeaf, boxElemTests, constructLeafObjectTests, initTime, maxDepth, maxObjPerLeaf, minObjPerLeaf, numLeaves, numNodes, and reset_trav_stats().
Referenced by moab::AdaptiveKDTree::build_tree(), moab::BVHTree::build_tree(), and TreeStats().
{ initTime = 0.0; maxDepth = 0; numNodes = 0; numLeaves = 0; constructLeafObjectTests = 0; boxElemTests = 0; avgObjPerLeaf = 0.0; minObjPerLeaf = 0.0; maxObjPerLeaf = 0.0; reset_trav_stats(); }
void moab::TreeStats::reset_trav_stats | ( | ) | [inline] |
reset traversal counters
Definition at line 141 of file TreeStats.hpp.
References leavesVisited, nodesVisited, numTraversals, and traversalLeafObjectTests.
Referenced by reset().
{ nodesVisited = 0; leavesVisited = 0; numTraversals = 0; traversalLeafObjectTests = 0; }
ErrorCode moab::TreeStats::traverse | ( | Interface * | impl, |
EntityHandle | node, | ||
unsigned int & | depth | ||
) | [inline, private] |
Definition at line 95 of file TreeStats.hpp.
References avgObjPerLeaf, children, ErrorCode, moab::Interface::get_child_meshsets(), moab::Interface::get_entities_by_handle(), maxObjPerLeaf, MB_SUCCESS, minObjPerLeaf, numLeaves, and numNodes.
Referenced by compute_stats().
{ depth++; numNodes++; std::vector< EntityHandle > children; children.reserve( 2 ); ErrorCode rval = impl->get_child_meshsets( node, children ); if( MB_SUCCESS != rval ) return rval; if( children.empty() ) { numLeaves++; rval = impl->get_entities_by_handle( node, children ); if( MB_SUCCESS != rval ) return rval; avgObjPerLeaf += children.size(); minObjPerLeaf = std::min( (unsigned int)children.size(), minObjPerLeaf ); maxObjPerLeaf = std::max( (unsigned int)children.size(), maxObjPerLeaf ); return MB_SUCCESS; } else { unsigned int right_depth = depth, left_depth = depth; rval = traverse( impl, children[0], left_depth ); if( MB_SUCCESS != rval ) return rval; rval = traverse( impl, children[1], right_depth ); if( MB_SUCCESS != rval ) return rval; depth = std::max( left_depth, right_depth ); return MB_SUCCESS; } }
Definition at line 63 of file TreeStats.hpp.
Referenced by compute_stats(), output_all_stats(), print(), reset(), and traverse().
unsigned int moab::TreeStats::boxElemTests |
Definition at line 74 of file TreeStats.hpp.
Referenced by moab::AdaptiveKDTree::intersect_children_with_elems(), output_all_stats(), print(), and reset().
unsigned int moab::TreeStats::constructLeafObjectTests |
Definition at line 71 of file TreeStats.hpp.
Referenced by moab::AdaptiveKDTree::intersect_children_with_elems(), output_all_stats(), print(), and reset().
double moab::TreeStats::initTime |
Definition at line 57 of file TreeStats.hpp.
Referenced by moab::AdaptiveKDTree::build_tree(), moab::BVHTree::build_tree(), output_all_stats(), print(), and reset().
unsigned int moab::TreeStats::leavesVisited |
Definition at line 69 of file TreeStats.hpp.
Referenced by moab::BVHTree::bruteforce_find(), moab::BVHTree::distance_search(), moab::AdaptiveKDTree::distance_search(), moab::BVHTree::find_point(), output_all_stats(), output_trav_stats(), moab::AdaptiveKDTree::point_search(), moab::BVHTree::point_search(), print(), and reset_trav_stats().
unsigned int moab::TreeStats::maxDepth |
Definition at line 60 of file TreeStats.hpp.
Referenced by compute_stats(), output_all_stats(), print(), and reset().
unsigned int moab::TreeStats::maxObjPerLeaf |
Definition at line 65 of file TreeStats.hpp.
Referenced by compute_stats(), output_all_stats(), print(), reset(), and traverse().
unsigned int moab::TreeStats::minObjPerLeaf |
Definition at line 64 of file TreeStats.hpp.
Referenced by compute_stats(), output_all_stats(), print(), reset(), and traverse().
unsigned int moab::TreeStats::nodesVisited |
Definition at line 68 of file TreeStats.hpp.
Referenced by moab::BVHTree::distance_search(), moab::AdaptiveKDTree::distance_search(), moab::BVHTree::find_point(), output_all_stats(), output_trav_stats(), moab::AdaptiveKDTree::point_search(), moab::BVHTree::point_search(), print(), and reset_trav_stats().
unsigned int moab::TreeStats::numLeaves |
Definition at line 62 of file TreeStats.hpp.
Referenced by compute_stats(), output_all_stats(), print(), reset(), and traverse().
unsigned int moab::TreeStats::numNodes |
Definition at line 61 of file TreeStats.hpp.
Referenced by compute_stats(), output_all_stats(), print(), reset(), and traverse().
unsigned int moab::TreeStats::numTraversals |
Definition at line 70 of file TreeStats.hpp.
Referenced by moab::BVHTree::bruteforce_find(), moab::BVHTree::distance_search(), moab::AdaptiveKDTree::distance_search(), moab::BVHTree::find_point(), output_all_stats(), output_trav_stats(), moab::AdaptiveKDTree::point_search(), moab::BVHTree::point_search(), print(), and reset_trav_stats().
unsigned int moab::TreeStats::traversalLeafObjectTests |
Definition at line 73 of file TreeStats.hpp.
Referenced by moab::BVHTree::bruteforce_find(), moab::BVHTree::distance_search(), moab::AdaptiveKDTree::distance_search(), moab::BVHTree::find_point(), output_all_stats(), output_trav_stats(), moab::AdaptiveKDTree::point_search(), moab::BVHTree::point_search(), print(), and reset_trav_stats().