Traversal statistics structure. More...
#include <OrientedBoxTreeTool.hpp>
Public Member Functions | |
const std::vector< unsigned > & | nodes_visited () const |
return counts of nodes visited, indexed by tree depth. the counts include both leaves and interior nodes More... | |
const std::vector< unsigned > & | leaves_visited () const |
return counts of tree leaves visited, indexed by tree depth More... | |
const std::vector< unsigned > & | traversals_ended () const |
return counts of traversals ended, indexed by tree depth More... | |
unsigned int | ray_tri_tests () const |
return total number of ray-triangle intersection tests performed in calls made with this TrvStats More... | |
void | reset () |
reset all counters on this structure More... | |
void | print (std::ostream &str) const |
print the contents of this structure to given stream More... | |
TrvStats () | |
Private Member Functions | |
void | increment (unsigned depth) |
void | increment_leaf (unsigned depth) |
void | end_traversal (unsigned depth) |
Private Attributes | |
std::vector< unsigned > | nodes_visited_count |
std::vector< unsigned > | leaves_visited_count |
std::vector< unsigned > | traversals_ended_count |
unsigned int | ray_tri_tests_count |
Friends | |
class | OrientedBoxTreeTool |
Traversal statistics structure.
Structure to accumulate statistics on traversal performance. Passed optionally to query functions, 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 OBB 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 151 of file OrientedBoxTreeTool.hpp.
|
inline |
Definition at line 181 of file OrientedBoxTreeTool.hpp.
181 : ray_tri_tests_count( 0 ) {}
|
private |
Definition at line 1695 of file OrientedBoxTreeTool.cpp.
1696 {
1697 // assume safe depth, because increment is always called on a given
1698 // tree level first
1699 traversals_ended_count[depth] += 1;
1700 }
Referenced by moab::OrientedBoxTreeTool::closest_to_location(), moab::OrientedBoxTreeTool::preorder_traverse(), and moab::OrientedBoxTreeTool::sphere_intersect_triangles().
|
private |
Definition at line 1677 of file OrientedBoxTreeTool.cpp.
1678 {
1679
1680 while( nodes_visited_count.size() <= depth )
1681 {
1682 nodes_visited_count.push_back( 0 );
1683 leaves_visited_count.push_back( 0 );
1684 traversals_ended_count.push_back( 0 );
1685 }
1686 nodes_visited_count[depth] += 1;
1687 }
Referenced by moab::OrientedBoxTreeTool::closest_to_location(), moab::OrientedBoxTreeTool::preorder_traverse(), and moab::OrientedBoxTreeTool::sphere_intersect_triangles().
|
private |
Definition at line 1689 of file OrientedBoxTreeTool.cpp.
1690 {
1691 // assume safe depth, because increment is called first
1692 leaves_visited_count[depth] += 1;
1693 }
Referenced by moab::OrientedBoxTreeTool::closest_to_location(), moab::OrientedBoxTreeTool::preorder_traverse(), and moab::OrientedBoxTreeTool::sphere_intersect_triangles().
|
inline |
return counts of tree leaves visited, indexed by tree depth
Definition at line 161 of file OrientedBoxTreeTool.hpp.
162 {
163 return leaves_visited_count;
164 }
References leaves_visited_count.
|
inline |
return counts of nodes visited, indexed by tree depth. the counts include both leaves and interior nodes
Definition at line 156 of file OrientedBoxTreeTool.hpp.
157 {
158 return nodes_visited_count;
159 }
References nodes_visited_count.
void moab::OrientedBoxTreeTool::TrvStats::print | ( | std::ostream & | str | ) | const |
print the contents of this structure to given stream
Definition at line 1702 of file OrientedBoxTreeTool.cpp.
1703 {
1704
1705 const std::string h1 = "OBBTree Depth";
1706 const std::string h2 = " - NodesVisited";
1707 const std::string h3 = " - LeavesVisited";
1708 const std::string h4 = " - TraversalsEnded";
1709
1710 str << h1 << h2 << h3 << h4 << std::endl;
1711
1712 unsigned num_visited = 0, num_leaves = 0, num_traversals = 0;
1713 for( unsigned i = 0; i < traversals_ended_count.size(); ++i )
1714 {
1715
1716 num_visited += nodes_visited_count[i];
1717 num_leaves += leaves_visited_count[i];
1718 num_traversals += traversals_ended_count[i];
1719
1720 str << std::setw( h1.length() ) << i << std::setw( h2.length() ) << nodes_visited_count[i]
1721 << std::setw( h3.length() ) << leaves_visited_count[i] << std::setw( h4.length() )
1722 << traversals_ended_count[i] << std::endl;
1723 }
1724
1725 str << std::setw( h1.length() ) << "---- Totals:" << std::setw( h2.length() ) << num_visited
1726 << std::setw( h3.length() ) << num_leaves << std::setw( h4.length() ) << num_traversals << std::endl;
1727
1728 if( ray_tri_tests_count )
1729 {
1730 str << std::setw( h1.length() ) << "---- Total ray-tri tests: " << ray_tri_tests_count << std::endl;
1731 }
1732 }
|
inline |
return total number of ray-triangle intersection tests performed in calls made with this TrvStats
Definition at line 172 of file OrientedBoxTreeTool.hpp.
173 {
174 return ray_tri_tests_count;
175 }
References ray_tri_tests_count.
void moab::OrientedBoxTreeTool::TrvStats::reset | ( | ) |
reset all counters on this structure
Definition at line 1669 of file OrientedBoxTreeTool.cpp.
1670 { 1671 nodes_visited_count.clear(); 1672 leaves_visited_count.clear(); 1673 traversals_ended_count.clear(); 1674 ray_tri_tests_count = 0; 1675 }
References leaves_visited_count, nodes_visited_count, ray_tri_tests_count, and traversals_ended_count.
|
inline |
return counts of traversals ended, indexed by tree depth
Definition at line 166 of file OrientedBoxTreeTool.hpp.
167 {
168 return traversals_ended_count;
169 }
References traversals_ended_count.
|
friend |
Definition at line 193 of file OrientedBoxTreeTool.hpp.
|
private |
Definition at line 185 of file OrientedBoxTreeTool.hpp.
Referenced by leaves_visited(), and reset().
|
private |
Definition at line 184 of file OrientedBoxTreeTool.hpp.
Referenced by nodes_visited(), and reset().
|
private |
Definition at line 187 of file OrientedBoxTreeTool.hpp.
Referenced by moab::OrientedBoxTreeTool::ray_intersect_sets(), moab::OrientedBoxTreeTool::ray_intersect_triangles(), ray_tri_tests(), and reset().
|
private |
Definition at line 186 of file OrientedBoxTreeTool.hpp.
Referenced by reset(), and traversals_ended().