Perfomancevergleich Klassen - Arrays

Sven B. schrieb:
> Das war aber nicht die Frage

Es ist aber die Antwort.

Warum sollte man über die Geschwindigkeitsunterschiede zwischen Krücken 
und Rollstühlen diskutieren, wenn ein kostenloser Tesla fahrbereit vor 
der Türe steht?

(Ok, Vergleich hinkt für große n, da helfen auch keine Krücken)
Gast
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
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
P. Dee schrieb:
> Geht es noch schneller?

Zum 3. Mal: Die Geschwindigkeit hängt von der Menge der Elemente in 
deiner Liste ab.
Wie wäre es wenn du einfach mal eine Testreihe mit deinen möglichen 
Alternativen machst, dann weisst du was schneller ist.
Gast
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
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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.