ArrayList zu langsam ???
-
Vielen Dank für die vielen Informationen .
Also ich habe ca 900.000 Elemente die der Reihe nache nach in die ArrayList geschriben werden und danach wireder infernt werden. ( Dazwischen passieren noch einige OPerationen). Das ist mein Sachverhalt. Ich habe mal gelesen, dass sich für sehr große Datenmengen ein Vector besser eigent. Stimt das ?
-
Fischkopf2009 schrieb:
Ich habe mal gelesen, dass sich für sehr große Datenmengen ein Vector besser eigent. Stimt das ?
Nein. Ein Vector ist vor allem synchronisiert. Er eignet sich also dann, wenn Du aus mehreren Threads gleichzeitig auf diese Datenstruktur zugreifst. Die Synchronisation kostet allerdings Zeit, so dass in anderen Fällen die ArrayList besser ist. Ich habe in meinem Kopf abgespeichert, dass die ArrayList eine nichtsynchronisierte Version eines Vectors ist. ...aber wie schon gesagt: Ich glaube fast, dass die ArrayList noch ein ganzes Stückchen intelligenter implementiert ist. Man müsste sich das mal im Code angucken.
-
Inzwischen bekomme ich in Netbeans die Warnung, dass Vector veraltet sei ;O
-
UNd was soll man anstelle dann nehmen
-
Abgesehen jetzt davon ob die LinkedList langsamer ist beim reinen Kopieren, hast du sie versucht?
Wenn ja, wie verhält sich dein Programm.
Wenn nein, müsst du uns mehr liefern, evtl Programmcode.
-
Fischkopf2009 schrieb:
UNd was soll man anstelle dann nehmen
Ich könnte mir Collections.synchronizedList() vorstellen.
MfG SideWinder
-
Oh das kenne ich gar nicht
-
Das ist nur gut, wenn dein Programm nebenläufig ist o.O
-
Und wenn nicht, reicht die normale (hier schon mehrfach erwähnte) ArrayList.
-
SG1 schrieb:
Und wenn nicht, reicht die normale (hier schon mehrfach erwähnte) ArrayList.
Die hat der Threadstarter schon im sein Startpost benutzt.
-
Ah, sorry, hatte Dich mit Fischkopf verwechselt.
-
Zeus schrieb:
Das ist nur gut, wenn dein Programm nebenläufig ist o.O
Sollte ja auch ein Ersatz für Vector sein!
MfG SideWinder
-
@Fischkopf
Ich warte auf deine Antwort.
-
Sorry bin gerade auf Arbeit und werde es erst heute abend ( in ca 2 Stunden ) ausprobieren.
Dann melde ichmich noch mal
erst mal danke für alle antworten
-
Zeus schrieb:
Abgesehen jetzt davon ob die LinkedList langsamer ist beim reinen Kopieren, hast du sie versucht?
Es gibt ein paar Anwendungsfälle, in denen eine LinkedList vermutlich schneller ist.
1. Hinzufügen von Elementen an beliebiger Stelle. ...zumindest, wenn man auf "natürliche Weise" zu dieser Stelle kommt und sie nicht über den Index gegeben hat.
2. Entfernen von Elementen an beliebiger Stelle. ...entsprechendes Szenario.
3. Entfernen des ersten Elements.
4. Hinzufügen von Elementen an den Anfang der Datenstruktur.
...usw.
-
Wegen Punkt 3 ist die Frage auch an Fischkopf2009 gerichtet
-
Fischkopf2009 schrieb:
Also ich habe ca 900.000 Elemente die der Reihe nache nach in die ArrayList geschriben werden und danach wireder infernt werden. ( Dazwischen passieren noch einige OPerationen). Das ist mein Sachverhalt.
Tja, das ist also dein Sachverhalt. Sehr duerftig beschrieben. Wie fuegst du ein, wie entfernst du, wie greifst du auf die Elemente zu, welche Operationen werden ausgefuehrt, ... Was bedeutet zu langsam fuer dich?
-
Also ich füge mit der add methode die elemente ein und lösche immer das erste lement
dazwischen findet aber noch einige operationen statt.
ich habe bereits experimente gemacht. die vorgestellten collections unterscheiden sich bei mir um ca 5 sekunden.
aber ich vermute den flaschenhals inden zusätzlichen berechnungen.
-
Dann waere es wohl Zeit, einen Profiler einzusetzen, anstatt wild herumzuprobieren.
-
knivil schrieb:
Dann waere es wohl Zeit, einen Profiler einzusetzen, anstatt wild herumzuprobieren.
BTW: Netbeans hat einen sehr guten Profiler integriert.