Objekte speichern

OnDemand

Top Contributor
Hallo zusammen,

ich muss eine csv Datei einlesen. Derzeit speicher ich diese Objekte aus der csv in einer List und übergebe sie einer Klasse, die entscheidet, wohin die Daten geschickt werden.
Das adden und wieder auslesen in der "Entscheiderklasse" innert einer for-Loop, dauert zu lange (sind gut 10.000-50.000 Objekte). Habt ihr eine schnellere Idee, wie ich Objekte zwischenspeichern kann und diese schnell wieder auslesen kann?
 

Joose

Top Contributor
Laut deiner Erklärung liest du eine CSV Datei ein und die daraus resultierende Liste gibst du als Parameter wo mit. Dort wird die Liste dann wieder durchlaufen und je nach Objekt entschieden was damit gemacht wird. (nur damit ich es richtig verstanden habe ;))

Woher weißt du das genau die Schleife in der "Entscheiderklasse" so lange braucht? Kann es sein das du die Daten in der Schleife auch dort hinschickst wo sie sollen?
Wenn ja nehme ich an das Schicken (wohin werden sie geschickt? Übers Netzwerk? Müssen sie umgewandelt werden damit sie geschickt werden können?) dauert einfach lange und dadurch nimmst natürlich auch die Schleife.

Hast du schon mal an Multi Threading gedacht (Producer/Consumer)?
Ein Thread (Producer) liest Zeile für Zeile aus der CSV Datei aus und wandelt die Daten in ein Objekt um. Diese Objekt wird in eine Queue gelegt.
Ein 2.Thread (Consumer) wartet wird gestartet und wartet darauf das etwas in die Queue gelegt wird. Wenn das passiert nimmt sich der Thread das Objekt aus der Queue und verarbeitet es (schickt es eben dorthin wo du willst). Danach wird wieder auf das nächste Objekt gewartet usw. bis eben alles abgearbeitet ist.
Vorteil: Du kannst mehrere Consumer Threads starten, welche sich die Verarbeitung der Objekte teilen (sprich im besten Fall verarbeitet bei 2 Thread jeder die Hälfte).

Ähnliche Möglichkeit:
Ein Thread liest wieder die Datei ein (auch hier kann mehrere erstellen, welche die Datei lesen), statt einer Queue für alle Objekte entscheided schon vorher was das Ziel ist und fügt das Objekt in eine entsprechende Queue für Ziel X ein. Hinter jeder Queue läuft wieder ein oder mehrere Threads welche die Objekte an ihr Ziel schicken.
Vorteil: Die Aufgaben sind sauber getrennt, ein Thread liest die Datei ein, ein Thread entscheidet was für ein Objekt es ist und wohin es geschickt werden muss, ein Thread verschickt das Objekt

Nachteile gibt es natürlich bei beiden Varianten: Multi Threading kann komplex werden.
Etwas mehr Infos über die möglichen Objekte und deren Ziele könnte vielleicht helfen eine passende Lösung zu finden :)
 

OnDemand

Top Contributor
Hi. Danke für die ideen. Also ich lese zb eine Datei von Audi ein die Autos werden in der list gespeichert. Diese list wird dann an eine klasse übergeben. Dort wird entschieden ob die Autos online angeboten werden und über welche Plattform. Wenn die Autos über Amazon angeboten werden, wird die List an den Amazon connector übergeben oder an Ebay etc. In den entsprechenden connectoren wird jedes Auto wieder heraus gecastet und in den Marktplatz gelesen.

Das casten dauert sehr lange finde ich.
 

Joose

Top Contributor
Was meinst du mit "heraus casten"? Findest du nur es dauert lange oder hast du es auch kontrolliert (Profiler oder wenigstens mit Java mitteln messen - System.getCurrentTimeMillis())?
 

OnDemand

Top Contributor
In der for schleife hole ich die Objekte wieder raus um sie zu verarbeiten

Obj ob =(Obj) list.get (i)
obj.pushToAmazon (obj)
Beim list.add geht das ratz fatz ca 100 Objekte pro Minute. In der for schleife sind es dann nur 15 pro Minute und alle Autos zu verarbeiten dauert fast ne Stunde.
 

Joose

Top Contributor
Für was steht "Obj" für die Klasse "Object" oder eine spezifische "Auto" Klasse?
Du rufst vom Objekt "obj" die Methode "pushToAmazon" auf und übergibst als Parameter das Objekt "obj". Das macht irgendwie keinen Sinn ;)

Ein Cast ist zwar nicht billig, aber auch nicht so teuer da er 15 Minuten rechtfertigen würden.
Ich gehe ganz stark davon aus das der Aufruf von "pushToAmazon" solange dauert. Wie schon oben gesagt, durch einen Profiler oder simples messen mit Java Mitteln genau kontrollieren wo die Zeit liegen bleibt. Erst danach sollte man versuchen zu optimieren.
 

OnDemand

Top Contributor
Moin, Obj ist ein Objekt der Klasse Auto, quasi.

pushToAmazon(obj);

so ist es korrekt, die Methode gehört der Amazon-Klasse an. Ja du hast recht, liegt an der push-Methode :( der cast geht ratz-fatz. Hmm dann muss ich mal schauen wie ich das beschleunigen kann
 

DrZoidberg

Top Contributor
Sendet dein Programm die Daten wirklich an Amazon oder tut es nur so? Im ersten Fall könnte natürlich die Kommunikation übers Internet der Flaschenhals sein. Im zweiten Fall stimmt da irgendwas nicht. 100 Objekte pro Minute ist extrem langsam. Ratz fatz wären 100 Millionen Objekte pro Sekunde.
 

Joose

Top Contributor
Ist die Amazon-Klasse von dir geschrieben oder eine vorgegeben? Wie DrZoidberg schon sagt ... entweder ist die Kommunikation übers Internet einfach nicht flott genug. Ansonsten macht diese Methode noch etwas sehr aufwendiges.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Objekte speichern und laden Allgemeine Java-Themen 10
H Objekte speichern und laden Allgemeine Java-Themen 1
C Objekte in Array List speichern? Allgemeine Java-Themen 1
M Instanzierte Objekte in XML Dokument speichern Allgemeine Java-Themen 3
K Input/Output Im Programm instanzierte Objekte Speichern und laden Allgemeine Java-Themen 3
H Objekte Serialisiert speichern Allgemeine Java-Themen 10
R Input/Output Objekte speichern ohne überschreiben Allgemeine Java-Themen 7
J Objekte binär speichern Allgemeine Java-Themen 10
W Objekte speichern mit JFileChooser Allgemeine Java-Themen 8
F Objekte oder besser ID in Listen speichern? Allgemeine Java-Themen 2
O binärer Suchbaum mit client server., objekte speichern. Allgemeine Java-Themen 2
M Objekte Dauerhaft speichern und evtl. auch ändern? Allgemeine Java-Themen 6
M Objekte in Array speichern Allgemeine Java-Themen 19
M Objekte speichern? Allgemeine Java-Themen 2
Chris_1980 Bilder u. Objekte in JarArchiv speichern Allgemeine Java-Themen 2
Q Speichern & Wiederherstellen von Daten (-objekte) Allgemeine Java-Themen 7
G Objekte verschlüsselt in Dateien speichern und laden Allgemeine Java-Themen 2
schegga_B javax.crypto - Cipher Objekte - Sevice Provider matching? Allgemeine Java-Themen 1
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
L Objekte in Set nicht gefunden Allgemeine Java-Themen 13
Avalon Data Transfer Objekte aus Datenbank erstellen Allgemeine Java-Themen 8
G Objekte mit Strings Aufrufen Allgemeine Java-Themen 8
MiMa Referenz auf Objekte und deren Inhalte Allgemeine Java-Themen 12
W Objekte reproduzieren Allgemeine Java-Themen 2
W Objekte per Reflexion instanziieren Allgemeine Java-Themen 7
W Unittest - Objekte simulieren Allgemeine Java-Themen 7
T OOP Objekte mit Erweiterung Initialisieren Allgemeine Java-Themen 6
O Erste Schritte Objekte als Datenelemente Allgemeine Java-Themen 14
J Equals Mock Objekte Allgemeine Java-Themen 5
J Mockito - Objekte miteinander vergleichen (equals) Allgemeine Java-Themen 6
N Bei Mouse Events nicht mehrere Objekte erstellen Allgemeine Java-Themen 13
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
J Java Objekte = null, Garbagecollector Allgemeine Java-Themen 12
F Listen - Mehrere Objekte Allgemeine Java-Themen 1
J Verständnis Frage zur Instanz, Objekte, Instanzierung, Referenz Allgemeine Java-Themen 14
F Objekte erzeugen Allgemeine Java-Themen 1
E Threads ThreadPoolExecutor remove mit callable Objekte Allgemeine Java-Themen 3
P mehrer Verschiedene Objekte in einer Klasse erstellen. Allgemeine Java-Themen 4
E OOP Objekte und Methoden Allgemeine Java-Themen 1
@SupressWarnings() Umgebungsvariable Objekte "gekoppelt" Allgemeine Java-Themen 6
S Algorithmus um Objekte auf einer Flaeche mit gleichem Abstand anzuordnen..? Allgemeine Java-Themen 20
B Objekte anhand von Properties file Allgemeine Java-Themen 41
U Tiefe Objekte schreiben Allgemeine Java-Themen 1
R Abstrakte Basisklasse und instanzierte Objekte der abgeleiteten Klasse als Basisklasse übergeben Allgemeine Java-Themen 2
E 3D Objekte in 2D Bild finden Allgemeine Java-Themen 5
J Daten aus GUI auslesen und in Objekte umwandeln Allgemeine Java-Themen 6
F FileOutput/Input Objekte Allgemeine Java-Themen 6
OnDemand Objekte serialisieren Allgemeine Java-Themen 3
J unterschiedliche Objekte, selbe getter und setter Allgemeine Java-Themen 15
L Lib gesucht: Java-Objekte mit JSON Allgemeine Java-Themen 2
U Set erklären dass objekte gleich sind Allgemeine Java-Themen 12
E Best Practice Verdammt große Objekte Allgemeine Java-Themen 10
B Mehrere Objekte verschlüsselt serialisieren Allgemeine Java-Themen 6
G Liste anzahl der gleichen Objekte Allgemeine Java-Themen 6
N Objekte an eine andere Applikation übergeben Allgemeine Java-Themen 3
N 2 Objekte zu einer Gruppe zusammenfügen Allgemeine Java-Themen 7
B Verschiedene Objekte in Abhängigkeit eines Typs instanziieren. Allgemeine Java-Themen 17
S OOP Objekte als Return-Werte: Einen Klon zurückgeben oder Instanz auf das Feld? Allgemeine Java-Themen 10
L MouseListener für viele Objekte erstellen Allgemeine Java-Themen 16
5 Objekte Sortieren lassen Allgemeine Java-Themen 7
N Objekte aus Array Inhalt erzeugen Allgemeine Java-Themen 8
L Input/Output Textdatei in Objekte überführen? Allgemeine Java-Themen 4
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
H Threads Thread stirbt aber Objekte in ihm leben weiter?! Allgemeine Java-Themen 9
M Java Objekte in XML mit JAXB Allgemeine Java-Themen 9
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
H COM-Objekte/ AktiveX Objekte Allgemeine Java-Themen 4
C Script für Website mit Objekte Ausblenden Allgemeine Java-Themen 3
M Txt einlesen & Objekte erzeugen Allgemeine Java-Themen 2
X Objekte aus TableModel serialisieren und deserialisieren Allgemeine Java-Themen 4
T ObjectInputStream - Arrayliste, die unbekannte Objekte enthält Allgemeine Java-Themen 9
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
D Grafische Objekte zeichnen Allgemeine Java-Themen 4
A Wie zur Laufzeit auf Objekte zugreifen Allgemeine Java-Themen 7
F Referenzen auf Objekte Allgemeine Java-Themen 5
H Eclipse und Objekte Allgemeine Java-Themen 6
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
E Objekte in einer Liste suchen. Allgemeine Java-Themen 4
I Über eine Liste iterieren und Objekte löschen. Wie löst man das sauber? Allgemeine Java-Themen 5
I Pattern zum Erweitern existierender Objekte Allgemeine Java-Themen 4
N Dynamische Objekte / DB Allgemeine Java-Themen 5
TiME-SPLiNTER Unbekannte Anzahl serialisierter Objekte lesen Allgemeine Java-Themen 2
V Objekte in Kategorien einteilen. Allgemeine Java-Themen 6
M 3D Objekte mit einer Linie Verbinden Allgemeine Java-Themen 3
F Wie zur Laufzeit ganz neue Objekte erzeugen? Allgemeine Java-Themen 5
A Dummy-Objekte für Webgui erzeugen Allgemeine Java-Themen 12
D befehl auf mehrere objekte anwenden Allgemeine Java-Themen 7
L Objekte in Liste packen Allgemeine Java-Themen 2
S XML in Objekte wandeln. Euer Rat? Allgemeine Java-Themen 12
G Objekte serialisieren Allgemeine Java-Themen 2
L Parameter-Objekte verändern oder nicht? Allgemeine Java-Themen 6
D Objekte nur unter bestimmten Voraussetzungen erzeugen Allgemeine Java-Themen 4
S Objekte mit Arrays Allgemeine Java-Themen 9
S erzeugte objekte zählen Allgemeine Java-Themen 3
U auf Objekte mit variablem Namen zugreifen Allgemeine Java-Themen 4
Airwolf89 dynamischer Zugriff auf Variablen/ Objekte Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben