Chain-Load: define data structure for graph statistics
The graph will be used to generate a computational load for testing the Scheduler; thus we need to compute some statistical indicators to characterise this load. As starting point sum counts and averages will be aggregated, accounting for particular characterisation of nodes per level.
This commit is contained in:
parent
a780d696e5
commit
d968da989e
2 changed files with 290 additions and 7 deletions
|
|
@ -98,18 +98,20 @@
|
|||
#include <boost/functional/hash.hpp>
|
||||
#include <functional>
|
||||
#include <utility>
|
||||
//#include <string>
|
||||
#include <string>
|
||||
//#include <deque>
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <array>
|
||||
#include <map>
|
||||
|
||||
|
||||
namespace vault{
|
||||
namespace gear {
|
||||
namespace test {
|
||||
|
||||
// using std::string;
|
||||
using std::string;
|
||||
// using std::function;
|
||||
// using lib::time::TimeValue;
|
||||
// using lib::time::Time;
|
||||
|
|
@ -138,6 +140,8 @@ namespace test {
|
|||
const size_t DEFAULT_SIZ = 256;
|
||||
}
|
||||
|
||||
struct Statistic;
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -631,5 +635,112 @@ namespace test {
|
|||
|
||||
|
||||
|
||||
|
||||
const string STAT_SEED{"seed"}; ///< seed node
|
||||
const string STAT_EXIT{"exit"}; ///< exit node
|
||||
const string STAT_INNR{"innr"}; ///< inner node
|
||||
const string STAT_FORK{"fork"}; ///< forking node
|
||||
const string STAT_JOIN{"join"}; ///< joining node
|
||||
const string STAT_LINK{"link"}; ///< 1:1 linking node
|
||||
const string STAT_KNOT{"knot"}; ///< knot (joins and forks)
|
||||
|
||||
const std::array KEYS = {STAT_SEED,STAT_EXIT,STAT_INNR,STAT_FORK,STAT_JOIN,STAT_LINK,STAT_KNOT};
|
||||
const uint CAT = KEYS.size();
|
||||
|
||||
using VecU = std::vector<uint>;
|
||||
using LevelSums = std::array<uint, CAT>;
|
||||
|
||||
/**
|
||||
* Distribution indicators for one kind of evaluation.
|
||||
* Evaluations over the kind of node are collected per (time)level.
|
||||
* This data is then counted, averaged and weighted.
|
||||
*/
|
||||
struct Indicator
|
||||
{
|
||||
VecU data{};
|
||||
uint cnt{0}; ///< global sum over all levels
|
||||
double frac{0}; ///< fraction of all nodes
|
||||
double pL{0}; ///< average per level
|
||||
double pLW{0}; ///< average per level and level-width
|
||||
double cL{0}; ///< weight centre level for this indicator
|
||||
double cLW{0}; ///< weight centre level width-reduced
|
||||
|
||||
void
|
||||
addPoint (uint level, uint width, uint items)
|
||||
{
|
||||
REQUIRE (level == data.size());
|
||||
data.push_back (items);
|
||||
cnt += items;
|
||||
pL += items;
|
||||
pLW += items / double(width);
|
||||
cL += level * items;
|
||||
cLW += level * items/double(width);
|
||||
}
|
||||
|
||||
void
|
||||
closeAverages (uint nodes)
|
||||
{
|
||||
uint levels = data.size();
|
||||
REQUIRE (levels > 0);
|
||||
frac = cnt / double(nodes);
|
||||
cL /= pL; // weighted averages: normalise to weight sum
|
||||
cLW /= pLW;
|
||||
pL /= levels; // simple averages : normalise to number of levels
|
||||
pLW /= levels;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Statistic data calculated for a given chain-load topology
|
||||
*/
|
||||
struct Staticstic
|
||||
{
|
||||
uint nodes{0};
|
||||
uint levels{0};
|
||||
VecU width{};
|
||||
|
||||
std::map<const string, Indicator> indicators;
|
||||
|
||||
explicit
|
||||
Staticstic (uint lvls)
|
||||
: nodes{0}
|
||||
, levels{lvls}
|
||||
{
|
||||
reserve (levels);
|
||||
}
|
||||
|
||||
void
|
||||
addPoint (uint levelWidth, LevelSums& particulars)
|
||||
{
|
||||
levels += 1;
|
||||
nodes += levelWidth;
|
||||
width.push_back (levelWidth);
|
||||
ASSERT (levels == width.size());
|
||||
for (uint i=0; i< CAT; ++i)
|
||||
indicators[KEYS[i]].addPoint (levels, levelWidth, particulars[i]);
|
||||
}
|
||||
|
||||
void
|
||||
closeAverages()
|
||||
{
|
||||
for (auto& KEY : KEYS)
|
||||
indicators[KEY].closeAverages (nodes);
|
||||
}
|
||||
|
||||
private:
|
||||
void
|
||||
reserve (uint levels)
|
||||
{
|
||||
width.reserve (levels);
|
||||
for (auto& KEY : KEYS)
|
||||
{
|
||||
indicators[KEY] = Indicator{};
|
||||
indicators[KEY].data.reserve(levels);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
}}} // namespace vault::gear::test
|
||||
#endif /*VAULT_GEAR_TEST_TEST_CHAIN_LOAD_H*/
|
||||
|
|
|
|||
|
|
@ -96265,9 +96265,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node COLOR="#338800" CREATED="1701013445667" ID="ID_478612436" MODIFIED="1701013452515" TEXT="RandomDraw-Parameter eingeführt">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701013458796" ID="ID_382069196" MODIFIED="1701014006906" TEXT="Umbau Erzeugung Start-Node">
|
||||
<arrowlink COLOR="#676075" DESTINATION="ID_1577021137" ENDARROW="Default" ENDINCLINATION="294;-251;" ID="Arrow_ID_342682284" STARTARROW="None" STARTINCLINATION="476;43;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1701013458796" ID="ID_382069196" MODIFIED="1701122403206" TEXT="Umbau Erzeugung Start-Node">
|
||||
<arrowlink COLOR="#606b75" DESTINATION="ID_1577021137" ENDARROW="Default" ENDINCLINATION="294;-251;" ID="Arrow_ID_342682284" STARTARROW="None" STARTINCLINATION="476;43;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700163498328" ID="ID_14989689" MODIFIED="1700163505288" TEXT="CtrlRules + Infrastruktur">
|
||||
|
|
@ -98712,7 +98712,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1701013295279" ID="ID_1577021137" MODIFIED="1701028436821" TEXT="verhindern daß die Generierung steckenbleibt">
|
||||
<linktarget COLOR="#676075" DESTINATION="ID_1577021137" ENDARROW="Default" ENDINCLINATION="294;-251;" ID="Arrow_ID_342682284" SOURCE="ID_382069196" STARTARROW="None" STARTINCLINATION="476;43;"/>
|
||||
<linktarget COLOR="#606b75" DESTINATION="ID_1577021137" ENDARROW="Default" ENDINCLINATION="294;-251;" ID="Arrow_ID_342682284" SOURCE="ID_382069196" STARTARROW="None" STARTINCLINATION="476;43;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1701013320019" ID="ID_1117191097" MODIFIED="1701013347739" TEXT="bisher wird nur die initiale Start-Node explizit erzeugt"/>
|
||||
<node CREATED="1701013349488" ID="ID_1770244833" MODIFIED="1701013370227" TEXT="durch Pruning könnten alle Vorgänger verschwinden; die Schleife dreht dann leer">
|
||||
|
|
@ -99412,7 +99412,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701016789541" ID="ID_677587050" MODIFIED="1701016798574" TEXT="Berechnung">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1701016800527" ID="ID_465492261" MODIFIED="1701016850415" TEXT="auf Erweiterbarkeit abzielen">
|
||||
<node CREATED="1701016800527" ID="ID_465492261" MODIFIED="1701125333044" TEXT="auf Erweiterbarkeit abzielen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
|
|
@ -99421,10 +99421,182 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701125376983" ID="ID_1738324890" MODIFIED="1701125382060" TEXT="Daten-Record">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1701125441964" ID="ID_418000988" MODIFIED="1701125470010" TEXT="feste Datenfelder als uint und double"/>
|
||||
<node CREATED="1701125474136" ID="ID_774880220" MODIFIED="1701125477483" TEXT="Benennungs-Schema">
|
||||
<node CREATED="1701126033651" ID="ID_1862774018" MODIFIED="1701126080812" TEXT="forks[lev]">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Vector mit Zähldaten indiziert nach Level
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1701125550995" ID="ID_1031639785" MODIFIED="1701126098550" TEXT="forks_cnt">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Gesamt-Anzahl der Forks
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1701125560924" ID="ID_669092405" MODIFIED="1701126154803" TEXT="forks_pL">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Forks per Level ∅
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1701125579683" ID="ID_1639658129" MODIFIED="1701126169319" TEXT="forks_pLW">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Forks per Level-Width ∅
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1701125941621" ID="ID_402557156" MODIFIED="1701126253934" TEXT="forks_cL">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Forks Level-γ-Schwerpunkt (centre)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1701125948023" ID="ID_5366972" MODIFIED="1701126246633" TEXT="forks_cLW">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Forks Level-Width-γ -Schwerpunkt (centre)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1701126282617" ID="ID_283726913" MODIFIED="1701126375947" TEXT="forks_pL_trend">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
lineare Regression der forks_pL über den Level
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1701126387036" ID="ID_691366138" MODIFIED="1701126595772" TEXT="forks_ma">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
forks moving average über den Level
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1701126601654" ID="ID_1465309970" MODIFIED="1701126630322" TEXT="forks_pW_ma">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
forks per width moving average (über den Level)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1701127574637" ID="ID_923332375" MODIFIED="1701127579225" TEXT="Struktur">
|
||||
<node CREATED="1701127580038" ID="ID_856358485" MODIFIED="1701127646988" TEXT="globals">
|
||||
<node CREATED="1701127588184" ID="ID_1819109646" MODIFIED="1701127599814" TEXT="Node-Zähler"/>
|
||||
<node CREATED="1701127600974" ID="ID_173189022" MODIFIED="1701127612041" TEXT="Vector der Level-Breiten"/>
|
||||
</node>
|
||||
<node CREATED="1701127623579" ID="ID_300642202" MODIFIED="1701127644053" TEXT="indicators">
|
||||
<node CREATED="1701127648856" ID="ID_1223520264" MODIFIED="1701127657990" TEXT="die Map mit den Kennzahl-Subobjekten"/>
|
||||
<node CREATED="1701128902290" ID="ID_380186539" MODIFIED="1701128917823" TEXT="String-Keys als Konstanten im Header"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1701126784469" ID="ID_1887920945" MODIFIED="1701126788192" TEXT="Rechenweg">
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701126789108" ID="ID_1733334637" MODIFIED="1701126799986" TEXT="das wird verdammt repetitiv">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
</node>
|
||||
<node CREATED="1701126885253" ID="ID_988227984" MODIFIED="1701126891770" TEXT="Sub-Objekte einführen">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1701126896342" ID="ID_628957116" MODIFIED="1701126910351" TEXT="da der Rechenweg stets gleich ist"/>
|
||||
<node COLOR="#435e98" CREATED="1701126911196" ID="ID_609498555" MODIFIED="1701127120136" TEXT="Frage: Ablage und Zugriff?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1701126927102" ID="ID_1692039562" MODIFIED="1701127026960" TEXT="Map mit String-Key"/>
|
||||
<node CREATED="1701127027572" ID="ID_554934189" MODIFIED="1701127035511" TEXT="Vector mit ENUM-index"/>
|
||||
<node CREATED="1701127055028" ID="ID_544320843" MODIFIED="1701127068922" TEXT="Sub-Objekte mit member-ptr"/>
|
||||
<node CREATED="1701127099690" ID="ID_1150088226" MODIFIED="1701127117708" TEXT="ist im Grunde egal ⟹ Map mit String-Key">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1701127237104" ID="ID_627445638" MODIFIED="1701127280398" TEXT="Sub-Objekt...">
|
||||
<node CREATED="1701127280727" ID="ID_211987609" MODIFIED="1701127280727" TEXT="enthält einen data-Vector"/>
|
||||
<node CREATED="1701127286949" ID="ID_113578279" MODIFIED="1701127312993" TEXT="ggfs später weitere Tabellen (MA, lokaler Trend)"/>
|
||||
<node CREATED="1701127339746" ID="ID_552079211" MODIFIED="1701127349436" TEXT="sowie feste Datenfelder für die Kennzahlen"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701127401298" ID="ID_1356798063" MODIFIED="1701127564540" TEXT="Berechnung-1">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1701127405705" ID="ID_1717640247" MODIFIED="1701127444776" TEXT="ein Datenpunkt + Breite"/>
|
||||
<node CREATED="1701127445812" ID="ID_1308319193" MODIFIED="1701127519477" TEXT="legt Daten ab und akkumuliert Integrale"/>
|
||||
<node CREATED="1701127520281" ID="ID_327297411" MODIFIED="1701127537417" TEXT="Abschluß: Gesamtzahl ⟼ ∅"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1701127540653" ID="ID_838754026" MODIFIED="1701127562922" TEXT="Berechnung-2">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node CREATED="1701127545038" ID="ID_1659639199" MODIFIED="1701127560980" TEXT="(abgeleitete Berechungen höherer Ordnung)">
|
||||
<font NAME="SansSerif" SIZE="11"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701016792372" ID="ID_1251453714" MODIFIED="1701016798575" TEXT="Darstellung">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701125319870" ID="ID_1457245227" MODIFIED="1701125329516" TEXT="Statistik-Report bereitstellen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue