• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Performancetest für Paketsystem

ArrayList oder HashMap schneller?

  • ArrayLIst

    Stimmen: 1 100,0%
  • HashMap

    Stimmen: 0 0,0%

  • Umfrageteilnehmer
    1

Thalion

Minecrafter
Registriert
22 Juli 2014
Beiträge
26
Diamanten
5
Minecraft
Spartaner_v1
Hallo allerseits,
da ich zur Zeit an einem Netzwerkdienst schreibe, probiere ich zur Zeit die beste Möglichkeit für die Validation zu finden, wobei ich Massen an Paketen zwischenspeichern muss. Um Hierbei zu einer geeignete Lösung zu kommen, und das über mehrere CPU bzw. PC-Systeme herauszufinden würde ich euch bitten einmal einen kleinen Test du machen.

Eine Zip mit einer Jar und einer run.bat ist hier vorhanden. Diese solltet ihr euch einmal herunterladen, entpacken und die run.bat ausführen.
Ich würde euch bitten folgende Zahlen einzugeben:
256 | 2048 | 8192 | 32000

( Hierbei geht es darum, welche Zahl am kleinsten ist, also am wenigsten Zeit benötigt. )

Anschließend könnt ihr das überwiegende Ergebnis in der Umfrage darstellen.
Ich hoffe auf eure mitarbeit.

Mfg,
Thalion

Edit by Dean: Keine Viren gefunden | Virustotal.com
Update: Keine Viren | Virustotal.com
 

Anhänge

  • jperf.zip
    4,1 KB · Aufrufe: 151
Zuletzt bearbeitet:

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
Ohne den Quellcode gesehen zu haben und ohne überhaupt verstanden zu haben was du tust kann ich dir jetzt schon sagen, dass du etwas falsch machst, denn eine ArrayList und eine HashMap sind komplett verschiedene Datenstrukturen. Das eine Arbeitet mit Keys und Values und das andere speichert einfach nur Objekte.

Davon abgesehen gibts zu den verschiedenen Datenstrukturen im Internet MASSIV Text. Um zu wissen was am schnellsten ist, musst du wissen wie du die Daten ablegen willst und wie du darauf zugreifst und dann ist die Entscheidung auch nicht mehr von zufälligen Tests abhängig sondern es lässt sich relativ klar sagen welche Datenstruktur am besten geeignet ist.

Wenn du von Netzwerkpaketen redest: Das sind eigentlich erstmal nur Bytes und da kann man z.B. größere ByteBuffer verwenden, die die Daten zwischenhalten. Wenn du es allerdings gleich richtig machen willst verwendest du eine Library, die für performante Netzwerkanwendungen entwickelt wurde: http://netty.io/

Wenn ich mich korrekt erinnere hattest du vor einiger Zeit auch ein Problem mit dem Asynchronen Netzwerkzeugs von Java. Daher mein Tipp: Verwend einfach Netty. Das nimmt dir die ganze Arbeit ab und ist dabei verdammt schnell und effektiv. Sofern du nicht bereits mehrjährige Erfahrung mit Netzwerkanwendungen unter Java hast wirst du auf keinen Fall etwas schöneres oder schnelleres als Netty implementieren können. Alles andere ist maximal schön um ein bisschen rumzuspielen aber an Netty kommt das alles nicht ran.
 

Thalion

Minecrafter
Registriert
22 Juli 2014
Beiträge
26
Diamanten
5
Minecraft
Spartaner_v1
Mir ist sehr wohl bewusst, dass ArrayList und HashMap unterschiedliche Datenstrukturen sind. Dein Punkt mit netty ist auch nett gemeint, jedoch möchte ich das selbst mit der standardmäßigen NIO-API auf die Beine stellen und mir nicht irgendwelche API's implementieren.
Zurück zum Punkt der verschiedenen Datenstrukturen. Ich habe auf mehreren PC-Systemen testen lassen und der Unterschied könnte kaum größer sein in Abhängigkeit von Menge der Elemente bzw. auch den PC-Systemen, weshalb ich gern in diesem Bezug eine Statistik hätte.

Auch performancemäßig gibt es viel im Netz, jedoch kann man sich auch ein bisschen selbstarbeit machen und auch mal etwas selbst erarbeiten.
Desweiteren würde ein ByteBuffer für mich nicht in Frage kommen, da ich zwar ganze Buffer mit Paketen fülle, jedoch es ewig dauern würde bei 32 Buffern mit a 8192 Byte alles zu iterieren um eine ValidationID zu finden ( explizit beim Server wobei sich die Menge um n*(32*8192) verhalten würde ).

Mfg,
Thalion
 

Thalion

Minecrafter
Registriert
22 Juli 2014
Beiträge
26
Diamanten
5
Minecraft
Spartaner_v1
Ok danke Inkemann,
habe ich nicht dran gedacht und werde den Test aktualisieren.

Mfg,
Thalion
 
Oben