Performate Zeiteiteiteilungs- Berechnung

PollerJava

Top Contributor
Hallo,

ich habe folgenden Code unten. Diese Zeiteinteilung pro Woche gehört zu einem User. Ich möchte nun alle halbe Stunden nachschaun ob dieser da ist, z.B.:

27.09.2015: 08:00 - 13:00

start immer bei 07:00 und ende immer um 19:00

07:00 - 07:30 nicht da -> 0
07:30 - 08:00 nicht da -> 0
08:00 - 08:30 da -> 1
08:30 - 09:00 da -> 1
09:30 - 10:00 da -> 1
...
13:00 - 13:30 nicht da -> 0

sowas soll dann rauskommen nur für diesen User:

0 0 0 0 1 1 1 ... 1 0 0 0 1 1 1 0 ...

für andere User kommt auch sowas raus und diese möchte ich dann zusammenzählen.

Meine Frage wäre jetzt, wie ich das performant lösen könnte.
wenn ich da mit einer for- Schleife über alle Intervall darüber iteriere, braucht das ja einigermaßen, da ich bis zu 1000 solcher SchedulerContainers haben kann (z.B. 80 User mit je 12 Terminen = 960 SchedulerContainers).

Ich verwende übrigens JodaTime aber ich hab noch keine Mögl



Java:
final List<List<SchedulerContainer>> weekScheduler = new ArrayList<>();

        weekScheduler.add(0, new ArrayList<SchedulerContainer>()); // day 1 of week
        weekScheduler.add(1, new ArrayList<SchedulerContainer>()); // day 2 of week
        weekScheduler.add(2, new ArrayList<SchedulerContainer>()); // day 3 of week
        weekScheduler.add(3, new ArrayList<SchedulerContainer>()); // day 4 of week
        weekScheduler.add(4, new ArrayList<SchedulerContainer>()); // day 5 of week
        weekScheduler.add(5, new ArrayList<SchedulerContainer>()); // day 6 of week
        weekScheduler.add(6, new ArrayList<SchedulerContainer>()); // day 7 of week

        final SchedulerContainer sc1 = new SchedulerContainer();
        sc1.setStart(formatter.parseDateTime("27.09.2015 08:00"));
        sc1.setEnd(formatter.parseDateTime("27.09.2015 13:00"));
        sc1.setContainerType(SchedulerContainerTypeEnum.SERVICE);
        sc1.setRepeatable(true);

        weekScheduler.get(1).add(sc1);

        final SchedulerContainer sc2 = new SchedulerContainer();
        sc2.setStart(formatter.parseDateTime("29.09.2015 11:00"));
        sc2.setEnd(formatter.parseDateTime("29.09.2015 17:00"));
        sc2.setContainerType(SchedulerContainerTypeEnum.SERVICE);
        sc2.setRepeatable(true);

        weekScheduler.get(3).add(sc1);
 

JStein52

Top Contributor
denkst du das oder weisst du das dass es inperformant ist ? Mir scheint das jetzt kein so grosses Problem über 1000 Container zu iterieren ?!
 

eldrior

Aktives Mitglied
Selbst wenn die Daten nicht im RAM sind, was sind denn bitte 1000 Zeilen aus einer Datenbank? Ich hab grade ne Anfrage offen. Oracle meint 126 Zeilen in 0,218 Sekunden. Allerdings ist das keine lokale Datenbank...
 

nvidia

Bekanntes Mitglied
Der Post ist unklar und wenig informativ formuliert. Es wird nicht deutlich ob es eine Annahme ist das es nicht schnell genug läuft oder es sich um einen bestätigten Fakt handelt (vernünftiger Benchmark mit z.B. JMH), dass genau das Iterieren und Zusammenzählen (ohne Latenz durch das Netzwerk etc.) lange dauert.

Soweit ich das verstanden habe kann jeder Tag nur 12 Stunden haben der dann in 24 halbe Stunden zerlegt und als eine Reihe von 0,1 je Person verwaltet wird. D.h. es hat die Form 000000000000000000000000 mit der ersten Stelle interpretiert als 7 und der letzten Stelle interpretiert als 19 Uhr. Anwesenheiten einer Person in halbstündiger Auflösung werden dann mit 1 markiert.

Und dann soll irgendetwas zusammengezählt werden. Nur was genau soll gezählt werden? Angenommen es gibt zwei Nutzer die für den selben Tag folgende Ausprägungen haben.

U1: 001110000000000000000000
U2: 000011100000000000000000

Welche Fragen sollen gestellt werden? Die Anzahl der halben Stunden pro Nutzer? Die Anzahl aller halben Stunden über alle Nutzer? Die Anzahl der halben Stunden in denen sich alle Nutzer überdecken/nicht überdecken? Die Anzahl der halben Stunden über alle Nutzer je Klasse?

Dieses Datenmodell lässt sich natürlich sehr speichereffizient behandeln wenn man die 0,1 als Bits auffasst und z.B. mit bitweisen Operatoren blockweise (z.B. als int) bearbeitet. Das schont den Speicher extrem und für bestimmte Fragen ist auch eine effiziente Auswertung möglich. Aber ob dieses Modell überhaupt das Richtige für das Problem ist und ob nicht ein anderes Modell oder eine Kombination aus verschiedenen Ansätzen besser wäre, dafür fehlen einfach Informationen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Berechnung der Zeit funktioniert nicht wie erwartet: Date, GregorianCalendar Allgemeine Java-Themen 16
pkm Berechnung der Fakultät von Fließkommazahlen anhand von Stirlingformel Allgemeine Java-Themen 4
I Berechnung Lagerbestands / Verfügbarkeitsprüfung Allgemeine Java-Themen 1
L RegEx für Teile einer Berechnung Allgemeine Java-Themen 14
L Korrektur nach der Berechnung vornehmen, aber wie? Allgemeine Java-Themen 11
D Berechnung des Cosinus Allgemeine Java-Themen 4
H float Berechnung: Ergebnis ohne wissenschaftliche Notation Allgemeine Java-Themen 5
A Fehlerhafte Nst Berechnung einer bestimmten Fkt. (Bisektion) Allgemeine Java-Themen 10
E Berechnung des Schnittpunktes von zwei Geraden Allgemeine Java-Themen 1
B TileMap berechnung? Allgemeine Java-Themen 8
P jodaTime Berechnung Geburtstag Allgemeine Java-Themen 1
K Probleme bei Berechnung der Komplexität Allgemeine Java-Themen 7
S Welcher Schleifen type für eine Berechnung Allgemeine Java-Themen 7
B BlueJ Potenz Berechnung Allgemeine Java-Themen 16
W Berechnung Durchschnitt mit Schleife Allgemeine Java-Themen 9
M Berechnung verbessern Allgemeine Java-Themen 8
W OOP Berechnung des Skalarprodukts Allgemeine Java-Themen 9
H Demonstrationsprogramm zur CRC-Berechnung Allgemeine Java-Themen 2
D Berechnung von Sonnenauf und Sonnenuntergang Allgemeine Java-Themen 2
E Berechnung in Arraylist Allgemeine Java-Themen 10
R Eclipse Verschiedene Ergebnisse bei Berechnung eines double-Werts Allgemeine Java-Themen 5
E Falsche Ergebnisse bei PQ-Formel Berechnung Allgemeine Java-Themen 12
N Optimierung einer Berechnung Allgemeine Java-Themen 17
G java.sql Time Berechnung Allgemeine Java-Themen 6
Eldorado Berechnung von Koordinaten, die zufällig aussehen Allgemeine Java-Themen 5
B Berechnung eines sinh abbrechen, wenn 16. Nachkommastelle sich nicht mehr ändert Allgemeine Java-Themen 7
J Berechnung anhand einer XML-Datei Allgemeine Java-Themen 3
Private Void rekursive vs. iterative Lösung für Berechnung der Fakultät Allgemeine Java-Themen 12
S YUV to RGB (einfache Berechnung) Allgemeine Java-Themen 5
G Programm zur Berechnung von Summe, Median, Erwartungswert, usw von einem Array Allgemeine Java-Themen 7
C Bilder rotieren, Denkfehler in der Berechnung? Allgemeine Java-Themen 2
B Berechnung von Punkten/ If-else Strategie?! Allgemeine Java-Themen 51
T Berechnung in zweidimensionalem Array Allgemeine Java-Themen 3
X hashCode() Berechnung Allgemeine Java-Themen 5
R Tabelle - Berechnung der "Zeilenart" Allgemeine Java-Themen 2
L Berechnung mit Module bis bes.timme Zahl erreicht. Allgemeine Java-Themen 4
P CRC Berechnung Allgemeine Java-Themen 2
J berechnung von potenzen und wurzel-ziehen ohne klasse " Allgemeine Java-Themen 14
D Problem bei einer Berechnung (pow?) Allgemeine Java-Themen 3
P Java-Programm zur Berechnung globaler Minimas und Maximas-ff Allgemeine Java-Themen 4
B Primzahlen Berechnung optimieren Allgemeine Java-Themen 7
A Probleme bei der Berechnung von Pi! Java Problem Allgemeine Java-Themen 2
M Servlet --> Berechnung --> Timeout vom Proxy oder IE!? Allgemeine Java-Themen 7

Ähnliche Java Themen


Oben