Perfomancevergleich Klassen - Arrays

Gast #4903025
Lesenswert?

P. Dee schrieb:
> PS: Ist der Geschwindigkeitsunterschied wirklich so bedeutend?

Kommt darauf an ob in deiner Liste 10 oder 10 Millionen Einträge sind.

Die Idee mit den Arrays widerspricht jedem OO Denken.
Ausserdem ist lineares Suchen so ziemlich das schlechteste. Dann 
sortiert man zumindest und sucht binär. Dafür gibts fertige statische 
Methoden in der Klasse Arrays.

Ansonsten haben Jim und Ernst natürlich recht.
Gast #4903097
Lesenswert?

Der Andere schrieb:
> Dann
> sortiert man zumindest und sucht binär. Dafür gibts fertige statische
> Methoden in der Klasse Arrays.

Wie sieht das denn bei einer HashMap und Macadressen aus?

Gegenwärtig habe ich HashMap<String,test>, während String für die 
mac-adresse steht.

Suchen tue ich über

if (testobjekt.containsKey(macadresse))
                    {
}

Geht es noch schneller?
Gast #4903189
Lesenswert?

P. Dee schrieb:
> Gegenwärtig habe ich HashMap<String,test>
> Geht es noch schneller?

Wie kommst du darauf, dass es noch schneller sein muss? Hast du schon 
darüber nachgedacht, ob - in Anbetracht der maximalen Anzahl der 
Elemente - O(n), O(log n) oder O(1) angesagt ist (bei den von dir 
benötigten Operationen)? Auch das Testen der Performance dürfte nicht 
lange dauern.

> Wie soll ich sonst darauf kommen, daß es noch Alternativen gibt.

Ähm, Bücher über die Programmiersprache und die entsprechende 
Standardbibliothek lesen, Tutorials durcharbeiten, ... Ein paar 
Grundlagen im Bereich Algorithmen und Datenstrukturen sind auch nicht zu 
verachten. Oder habe ich die Frage falsch verstanden?

Für den Anfang konkret zum Thema:
http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_13_008.htm
#4903327
Lesenswert?

P. Dee schrieb:
> Εrnst B✶ hat recht. Wie soll ich sonst darauf kommen, daß es noch
> Alternativen gibt.

Indem du deine Frage formulierst als "was ist die schnellste 
Möglichkeit, um dieses Problem zu lösen" und nicht als "welche dieser 
beiden Varianten ist schneller". Woher soll ich denn wissen, was du 
sonst noch für Anforderungen hast, die nur die beiden genannten 
Möglichkeiten zulassen? Wenn ich mir nur den Code ankucke und 
rumfantasiere, kann ich auch auf die Idee kommen, dass du eine Karte 
haben willst und darauf Objekte nach Ort oder Abstand zueinander finden. 
Dann wäre die Hashmap schon wieder völlig ungeeignet und man sollte 
stattdessen einen Quadtree nehmen. Das stand aber nicht in der Frage, 
deshalb hab ich einfach die Frage beantwortet so wie sie da stand.

Die Reaktionen von euch waren jedenfalls ausgesprochen unhöflich, und 
das völlig unnötigerweise. Warum? Was bringt das? Fühlt man sich so viel 
besser, wenn man andere als Anfänger bezeichnet?

Für wenige Einträge (50) ist die Vektor-Variante übrigens trotzdem 
schneller als die HashMap, O(1) oder nicht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren