96 lines
2.7 KiB
C++
96 lines
2.7 KiB
C++
#ifndef _OTB_TRISKELE_TREE_STATS_HPP
|
|
#define _OTB_TRISKELE_TREE_STATS_HPP
|
|
|
|
#include <iostream>
|
|
|
|
#include <boost/accumulators/accumulators.hpp>
|
|
#include <boost/accumulators/statistics/stats.hpp>
|
|
#include <boost/accumulators/statistics/sum.hpp>
|
|
#include <boost/accumulators/statistics/count.hpp>
|
|
#include <boost/accumulators/statistics/min.hpp>
|
|
#include <boost/accumulators/statistics/max.hpp>
|
|
#include <boost/accumulators/statistics/mean.hpp>
|
|
|
|
#include "ArrayTree/triskeleArrayTreeBase.hpp"
|
|
|
|
namespace otb {
|
|
namespace triskele {
|
|
|
|
using namespace otb::triskele::arrayTree;
|
|
using namespace std;
|
|
namespace ba = boost::accumulators;
|
|
typedef ba::accumulator_set<DimImg, ba::stats<ba::tag::count,
|
|
ba::tag::mean,
|
|
ba::tag::min,
|
|
ba::tag::max> > TreeStatsDim;
|
|
typedef ba::accumulator_set<double, ba::stats<ba::tag::sum,
|
|
ba::tag::count,
|
|
ba::tag::mean,
|
|
ba::tag::min,
|
|
ba::tag::max> > TreeStatsDouble;
|
|
|
|
enum TimeType {
|
|
buildTreeStats,
|
|
buildSetupStats,
|
|
buildToTilesStats,
|
|
buildEdgesStats,
|
|
buildParentsStats,
|
|
buildFromTilesStats,
|
|
buildMergeStats,
|
|
buildForestStats,
|
|
buildIndexStats,
|
|
buildCompressStats,
|
|
buildChildrenStats,
|
|
setAPStats,
|
|
areaStats,
|
|
averageStats,
|
|
xyStats,
|
|
moiStats,
|
|
sdStats,
|
|
filteringStats,
|
|
copyImageStats,
|
|
readStats,
|
|
writeStats,
|
|
allStats,
|
|
|
|
TimeTypeCard
|
|
};
|
|
|
|
class TreeStats {
|
|
public :
|
|
void reset ();
|
|
inline void addDim (const TreeType &treeType, const DimImg& leafCount, const DimImg& compCount);
|
|
inline void addTime (const TimeType &timeType, const double &duration);
|
|
inline const TreeStatsDouble &getTimeStats (const TimeType &timeType);
|
|
|
|
// nice ostream
|
|
struct CPrintDim {
|
|
const TreeStats &treeStats;
|
|
CPrintDim (const TreeStats &treeStats);
|
|
ostream &print (ostream &out) const;
|
|
ostream &print (ostream &out, const TreeStatsDim stats[], const string &msg) const;
|
|
};
|
|
CPrintDim printDim () const;
|
|
friend ostream &operator << (ostream& out, const CPrintDim &cpd) { return cpd.print (out); }
|
|
|
|
struct CPrintTime {
|
|
const TreeStats &treeStats;
|
|
CPrintTime (const TreeStats &treeStats);
|
|
ostream &print (ostream &out) const;
|
|
};
|
|
CPrintTime printTime () const;
|
|
friend ostream &operator << (ostream& out, const CPrintTime &cpt) { return cpt.print (out); }
|
|
|
|
private :
|
|
|
|
TreeStatsDim leavesStats[TreeTypeCard], compStats[TreeTypeCard];
|
|
TreeStatsDouble timeStats[TimeTypeCard];
|
|
};
|
|
static TreeStats globalTreeStats;
|
|
|
|
#include "TreeStats.tpp"
|
|
} // triskele
|
|
} // otb
|
|
|
|
#endif // _OTB_TRISKELE_TREE_HPP
|