Initial commit: Final state of the master project
This commit is contained in:
73
Research/core/OctreeBuilder/OctreeBuilderStatistics.h
Normal file
73
Research/core/OctreeBuilder/OctreeBuilderStatistics.h
Normal file
@@ -0,0 +1,73 @@
|
||||
#pragma once
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include "../Defines.h"
|
||||
|
||||
struct OctreeBuilderStatistics
|
||||
{
|
||||
public:
|
||||
unsigned8 levels;
|
||||
std::string type;
|
||||
|
||||
double validCoordBuildtime;
|
||||
double depthPeelingTime;
|
||||
double finalizationTime;
|
||||
double totalTime;
|
||||
|
||||
std::vector<size_t> octreeNodesPerLevel;
|
||||
std::vector<size_t> dagNodesPerLevel;
|
||||
|
||||
OctreeBuilderStatistics(unsigned8 levels)
|
||||
{
|
||||
this->levels = levels;
|
||||
validCoordBuildtime = depthPeelingTime = finalizationTime = totalTime = 0;
|
||||
octreeNodesPerLevel = std::vector<size_t>(levels + 1);
|
||||
dagNodesPerLevel = std::vector<size_t>(levels + 1);
|
||||
}
|
||||
|
||||
size_t GetOctreeNodeCount() const
|
||||
{
|
||||
size_t octreeNodeCount = 0;
|
||||
for (unsigned8 level = 0; level <= levels; level++)
|
||||
octreeNodeCount += octreeNodesPerLevel[level];
|
||||
return octreeNodeCount;
|
||||
}
|
||||
|
||||
size_t GetDAGNodeCount() const
|
||||
{
|
||||
size_t dagNodeCount = 0;
|
||||
for (unsigned8 level = 0; level <= levels; level++)
|
||||
dagNodeCount += dagNodesPerLevel[level];
|
||||
return dagNodeCount;
|
||||
}
|
||||
|
||||
long double GetCompression() const
|
||||
{
|
||||
return (long double)GetOctreeNodeCount() / (long double)GetDAGNodeCount();
|
||||
}
|
||||
|
||||
long double GetCompression(unsigned8 level) const
|
||||
{
|
||||
return (long double)octreeNodesPerLevel[level] / (long double)dagNodesPerLevel[level];
|
||||
}
|
||||
|
||||
void Print() const
|
||||
{
|
||||
printf("DAG created with the following properties:\n");
|
||||
printf("Total time : %10u ms\n", (unsigned)(totalTime * 1000));
|
||||
printf("Valid subtree calculation time : %10u ms\n", (unsigned)(validCoordBuildtime * 1000));
|
||||
printf("Depth peeling time : %10u ms\n", (unsigned)(depthPeelingTime * 1000));
|
||||
printf("Subtree finalization time : %10u ms\n", (unsigned)(finalizationTime * 1000));
|
||||
|
||||
printf("Total nodes : %10zu\n", GetOctreeNodeCount());
|
||||
printf("DAG nodes : %10zu\n", GetDAGNodeCount());
|
||||
printf("Compression : %10.2Lf\n", GetCompression());
|
||||
printf("\n");
|
||||
|
||||
|
||||
printf("Statistics per level:\n");
|
||||
printf("Level Octree (#) DAG (#) Compression\n");
|
||||
for (unsigned8 level = 0; level <= levels; level++)
|
||||
printf("%5d %12zu %12zu %12.2Lf\n", level, octreeNodesPerLevel[level], dagNodesPerLevel[level], GetCompression(level));
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user