Quiq::Schedule - Matrix von zeitlichen Vorgängen
Quiq::Hash
Ordne eine Menge von zeitlichen Vorgängen (z.B. gelaufene Prozesse) in einer Reihe von Zeitschienen (Matrix) an. Finden Vorgänge parallel statt (also zeitlich überlappend), hat die Matrix mehr als eine Zeitschiene.
$mtx = $class->new(\@objects,$sub);
Liste von Objekten, die einen Anfangs- und einen End-Zeitpunkt besitzen.
Subroutine, die den Anfangs- und den Ende-Zeitpunkt des Objektes in Unix-Epoch liefert. Signatur:
sub { my $obj = shift; my $epoch1 = ...; my $epoch2 = ...; return ($epoch1,$epoch2); }
Matrix-Objekt
Instantiiere ein Matrix-Objekt für die Vorgänge @objects und liefere eine Referenz auf dieses Objekt zurück.
Algorithmus
Wir beginnen mit einer leeren Liste von Zeitschienen.
Die Objekte @objects werden nach Anfangszeitpunkt aufsteigend sortiert.
Es wird über die Objekte iteriert. Das aktuelle Objekt wird zu der ersten Zeitschiene hinzugefügt, die frei ist. Eine Zeitschiene ist frei, wenn sie leer ist oder der Ende-Zeitpunkt des letzten Elements vor dem Anfangs-Zeitpunkt des aktuellen Objekts liegt.
@entries | $entryA = $mtx->entries; @entries | $entryA = $mtx->entries($i);
Liste von Prozess-Matrix-Einträgen (Array of Quiq::Hash). Im Skalarkontext eine Referenz auf die Liste.
Liefere die Liste der Einträge in der Prozess-Matrix. Ist $i angegeben, nur die Einträge der Zeitleiste $i. Ein Eintrag ist ein Quiq:Hash-Objekt mit den Attributen:
Index der Zeitleiste.
Anfangszeitpunkt in Unix Epoch.
Ende-Zeitpunkt in Unix Epoch.
Referenz auf das ursprüngliche Objekt.
$n = $mtx->maxLength;
Integer
Liefere die maximale Anzahl an Einträgen in einer Zeitschiene.
$epoch = $mtx->minTime;
Float
Liefere den frühesten Anfangs-Zeitpunkt über allen Objekten.
$epoch = $mtx->maxTime;
Liefere den spätesten Ende-Zeitpunkt über allen Objekten.
$width = $mtx->width;
Liefere die Anzahl der Kolumnen der Matrix.
1.195
Frank Seitz, http://fseitz.de/
Copyright (C) 2021 Frank Seitz
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Quiq, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Quiq
CPAN shell
perl -MCPAN -e shell install Quiq
For more information on module installation, please visit the detailed CPAN module installation guide.