Job-Planning: replace FrameCoord by direct references
...in the hope that the Optimiser is able to elide those references entirely, when (as is here the case) they point into another field of a larger object compound
This commit is contained in:
parent
a1c1456849
commit
9ef3d98de7
3 changed files with 61 additions and 19 deletions
|
|
@ -54,6 +54,7 @@
|
|||
#include "lib/time/timevalue.hpp"
|
||||
//#include "lib/iter-explorer.hpp"
|
||||
//#include "lib/iter-adapter.hpp"
|
||||
#include "lib/nocopy.hpp"
|
||||
#include "lib/util.hpp"
|
||||
|
||||
|
||||
|
|
@ -89,16 +90,17 @@ namespace engine {
|
|||
* @todo WIP-WIP 6/2023 reworking the job-planning pipeline for »PlaybackVerticalSlice«
|
||||
*/
|
||||
class JobPlanning
|
||||
: util::MoveOnly
|
||||
{
|
||||
FrameCoord frameCoord_;
|
||||
JobTicket& jobTicket_;
|
||||
DataSink& outputSink_;
|
||||
JobTicket& jobTicket_;
|
||||
Time const& nominalTime_;
|
||||
FrameCnt const& frameNr_;
|
||||
|
||||
public:
|
||||
JobPlanning(FrameCoord frame, JobTicket& ticket, DataSink& sink)
|
||||
: frameCoord_{frame}
|
||||
, jobTicket_{ticket}
|
||||
, outputSink_{sink}
|
||||
JobPlanning(JobTicket& ticket, Time const& nominalTime, FrameCnt const& frameNr)
|
||||
: jobTicket_{ticket}
|
||||
, nominalTime_{nominalTime}
|
||||
, frameNr_{frameNr}
|
||||
{ }
|
||||
|
||||
|
||||
|
|
@ -112,7 +114,7 @@ namespace engine {
|
|||
Job
|
||||
buildJob()
|
||||
{
|
||||
Job job = jobTicket_.createJobFor (frameCoord_.absoluteNominalTime);
|
||||
Job job = jobTicket_.createJobFor (Time{nominalTime_});
|
||||
//////////////////////////////////////////////////////TICKET #1295 : somehow package and communicate the DataSink info
|
||||
return job;
|
||||
}
|
||||
|
|
@ -132,7 +134,7 @@ namespace engine {
|
|||
return Time::ANYTIME;
|
||||
|
||||
case play::TIMEBOUND:
|
||||
return timings.getTimeDue(frameCoord_.absoluteFrameNumber)
|
||||
return timings.getTimeDue(frameNr_)
|
||||
- totalLatency(timings);
|
||||
}
|
||||
NOTREACHED ("unexpected playbackUrgency");
|
||||
|
|
|
|||
|
|
@ -112,12 +112,12 @@ namespace test {
|
|||
play::Timings timings (FrameRate::PAL);
|
||||
auto [port,sink] = dispatcher.getDummyConnection(1);
|
||||
|
||||
Time nominalTime{200,0};
|
||||
FrameCnt frameNr{5};
|
||||
TimeVar nominalTime{Time{200,0}};
|
||||
size_t portIDX = dispatcher.resolveModelPort (port);
|
||||
JobTicket& ticket = dispatcher.getJobTicketFor(portIDX, nominalTime);
|
||||
|
||||
FrameCoord frame{nominalTime, portIDX}; /////////////////////////////OOO replace FrameCoord
|
||||
JobPlanning plan{frame,ticket,sink};
|
||||
JobPlanning plan{ticket,nominalTime,frameNr};
|
||||
Job job = plan.buildJob();
|
||||
|
||||
CHECK (dispatcher.verify (job, port, sink));
|
||||
|
|
@ -140,8 +140,7 @@ namespace test {
|
|||
size_t portIDX = dispatcher.resolveModelPort (port);
|
||||
JobTicket& ticket = dispatcher.getJobTicketFor(portIDX, nominalTime);
|
||||
|
||||
FrameCoord frame{nominalTime, frameNr, portIDX}; /////////////////////////////OOO replace FrameCoord
|
||||
JobPlanning plan{frame,ticket,sink};
|
||||
JobPlanning plan{ticket,nominalTime,frameNr};
|
||||
|
||||
// the following calculations are expected to happen....
|
||||
Duration latency = ticket.getExpectedRuntime()
|
||||
|
|
|
|||
|
|
@ -75947,7 +75947,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687043645122" ID="ID_1471106329" MODIFIED="1687047113108" TEXT="FrameCoord müssen bereits in den TickGenerator">
|
||||
<node COLOR="#5b280f" CREATED="1687043645122" ID="ID_1471106329" MODIFIED="1687131535956" TEXT="FrameCoord müssen bereits in den TickGenerator">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
|
|
@ -75958,6 +75958,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node CREATED="1687047126863" ID="ID_1211205955" MODIFIED="1687047136938" TEXT="das ist aber nicht schön">
|
||||
<icon BUILTIN="smily_bad"/>
|
||||
</node>
|
||||
|
|
@ -75979,7 +75980,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1687047521489" ID="ID_1343365951" MODIFIED="1687047537890" TEXT="meistens sind sie nur halb gültig — oder redundant"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687047541216" ID="ID_3859431" MODIFIED="1687047560873" TEXT="wichtige bestehende Verwendungen">
|
||||
<node COLOR="#435e98" CREATED="1687047541216" ID="ID_3859431" MODIFIED="1687131788560" TEXT="wichtige bestehende Verwendungen">
|
||||
<icon BUILTIN="info"/>
|
||||
<node COLOR="#338800" CREATED="1687047579697" ID="ID_737360799" MODIFIED="1687052483835" TEXT="JobTicket::createJobFor (FrameCoord)">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
|
|
@ -76066,12 +76067,12 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687047874264" ID="ID_59699296" MODIFIED="1687047879655" TEXT="Feld in JobPlanning">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1687047874264" ID="ID_59699296" MODIFIED="1687131543337" TEXT="Feld in JobPlanning">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1687047881181" ID="ID_1499402798" MODIFIED="1687047886577" TEXT="grade neu gebaut">
|
||||
<icon BUILTIN="ksmiletris"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687047888296" ID="ID_1054027313" MODIFIED="1687047916199" TEXT="möglichst durch Referenzen ersetzen">
|
||||
<node COLOR="#435e98" CREATED="1687047888296" ID="ID_1054027313" MODIFIED="1687131548328" TEXT="möglichst durch Referenzen ersetzen">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -76082,6 +76083,46 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687053133875" ID="ID_613644358" MODIFIED="1687053158627" TEXT="...und stattdessen wird direkt auf die Felder im TickGenerator verwiesen (const&)">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687131811965" ID="ID_1192855537" MODIFIED="1687131818555" TEXT="Pipeline-Definition umbauen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1687131819547" ID="ID_1957351479" MODIFIED="1687131843128" TEXT="Problem: ItemWrapper weist Werte zu">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1687131845108" ID="ID_1247271270" MODIFIED="1687131867304" TEXT="...und kann deshalb keine non-copyable-Typen handhaben">
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node CREATED="1687131868445" ID="ID_1704149630" MODIFIED="1687131886190" TEXT="jetzt REICHTS mir langsam mit diesem dämlichen Problem">
|
||||
<icon BUILTIN="yes"/>
|
||||
<icon BUILTIN="smiley-angry"/>
|
||||
<node CREATED="1687131919997" ID="ID_830496483" MODIFIED="1687132086162">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
leider ist das ziemlich <i>abschüssiges Gelände</i>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
....per SFINAE feststellen, daß ein Asignment-Operator unterdrückt wurde; lt. Standard sollte das gehen (das war eine späte Änderung zu C++11, da es in der Stdlib so viel Probleme gemacht hat) — aber in der Praxis weiß ich, daß das fragil ist, manchmal Fehler auslösen kann (statt SFINAE), und daß es Diskrepanzen zwischen den Compilern gibt. Ich hatte auch schon Fälle, wo std::is_assignable rundweg versagt hat....
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1687132088191" ID="ID_1816334696" MODIFIED="1687132118495" TEXT="also käme erst mal nur in Frage, dort generell stets neu zu konstruieren"/>
|
||||
<node CREATED="1687132120955" ID="ID_170368448" MODIFIED="1687132134893" TEXT="(was aber meist auch das ist, was man dort möchte)"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue