Kann mir das jemand hier oder dort beantworten: http://stackoverflow.com/questions/42232308/performance-comparison-custom-class-versus-arrays
Kann kein Java aber typischerweise ist das mit den 4 Arrays besser, weil die Daten die du durchsuchst dann alle nebeneinander im Speicher liegen.
Jim M. schrieb: > Anfänger, beide. Für dieses Problem gibt es HashMap. Das war aber nicht die Frage ...
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)
Εrnst B✶ hat recht. Wie soll ich sonst darauf kommen, daß es noch Alternativen gibt.
PS: Ist der Geschwindigkeitsunterschied wirklich so bedeutend?
Die Frage ist in StackOverflow gestellt und wird dort auch beantwortet.
P. Dee schrieb: > PS: Ist der Geschwindigkeitsunterschied wirklich so bedeutend? Bei 5 Einträgen: nein. Bei 5 Mio Einträgen: Ja. Beim Sprung 5 -> 5Mio Einträge wird die Array/Listen-Version um den Faktor 1000000 langsamer. Die Map/HashMap-Version nur um den Faktor 20 (Pi-Mal-Daumen)
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.
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?
P. Dee schrieb: > Geht es noch schneller? ja, die mac binär speichern -> es muss weniger verglichen werden. keine Ahnung wie man das in Java macht.
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.
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.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.