du sagtest, dass Arrays auch gehen würden.
jetzt ist aber noch ne frage aufgetaucht.
ich hab mir überlegt, dass das unlogisch ist, wenn man plötzlich 10'000
einheiten hat.
also, deshalb habe ich mich entschlossen, eine grenze von max. 500 einheiten.
jetzt zur frage:
hat das irgedn einen unterschied bei der geschwindigkeit?
sind Arrays schneller als LLs? oder langsamer?
gibt es sonst noch ausschlaggebende unterschiede?
du sagtest, dass Arrays auch gehen würden.
jetzt ist aber noch ne frage aufgetaucht.
ich hab mir überlegt, dass das unlogisch ist, wenn man plötzlich 10'000
einheiten hat.
also, deshalb habe ich mich entschlossen, eine grenze von max. 500 einheiten.
jetzt zur frage:
hat das irgedn einen unterschied bei der geschwindigkeit?
sind Arrays schneller als LLs? oder langsamer?
gibt es sonst noch ausschlaggebende unterschiede?
Du wirst spätestens bei der ersten großen Präsentation einen Spieler haben der es, wie auch immer, schafft genau 501 Einheiten zu benötigen. Murphy's law
Beginne jeden Tag als ob es Absicht wäre! BILDblog
ich denke nur, dass es nich so ganz "real" ist, wenn ein gegner 20 soldaten hat, und ein anderer 500.
ich kann die grenze dann natürlich auch hochschraben, zb auf 1000
aber bis man nur so viele einheiten "produziert" hat.
aber es intressieren mich immer noch die unterschiede, zwischen Arrays und lls
Ein Array ist ein fester Block im Speicher, eine feste Größe. Mal angenommen du brauchst 20 long variablen, dann wären dass 20 * 4 = 80 byte im Speicher. Also hast du ein Array mit 20 Plätzen, insgesamt, 80 Byte, weil jeder Platz 4 byte belegt.
Eine LinkedList geht da anders vor. Der Speicher wird erst dann reserviert, wenn er benötigt wird. Das bedeutet, du erstellst die Liste, fügst ein Element hinzu, dann wird eine long variable im Speicher angelegt und der Pointer der Liste zugewiesen. Man spricht also mit der Liste nur immer eine Variable oder einen Speicherbereich an, wenn der Typ etwa eine Struktur ist und somit nicht nur eine Variable.
Beim Hinzufügen der nächsten Elemente wird wieder nur einmal Speicher für die Long reserviert, dann ein Pointer auf die Liste gelegt. Das vorherige Element bekommt auch noch einen pointer, das neuerstellte einen auf das vorherige. Es entsteht eine Kette von Speicherbereichen die auf das nächstfolgende und vorherige zeigen. Dadurch springt man wesentlich mehr im Speicher umher, wenn man nach einem gewissen Element sucht. Man kann nicht einfach "Speicherbereich + 5" sagen, wenn man das 5te Element haben möchte. Sondern man muss vom ersten ab losgehen und den Pointer zum nächsten verfolgen. Dann wieder den pointer zum nächsten, das so lange, bis man beim 5ten Element ist. Das braucht in der Regel mehr Zeit als wenn man die Speicherstelle direkt anspringen kann. Daher sind LinkedLists langsamer als Arrays. Dafür auch dynamischer, denn der Speicher wird erst reserviert, wenn er benötigt wird. Ebeneso kann man elemente leicht löschen oder verschieben, beim Array hat man eine feste Zahl an Elementen.
ich werde wohl vorerst Arrays nehmen, da es mir einfacher scheint, als das ewige vor und zurück hopsen.
bis jetzt läuft zum glück (dank eurer hilfe) alles.
is klar, du hast da auch nur 2 sachen.
ich dagegen werde duzende haben
und was is, wenn ich jetzt beim 2 element bin, und zum 50 muss?
dann hört das ja nicht mehr auf mit dem hopsen.
auch in einer for next schleife wirds mühsam
ok, das wusste ich jetzt noch nicht
jetzt hast du mich verirrt, was soll ich jetzt nehmen?
arrays oder lls?
ich werde warscheinlich trotzdem bei arrays bleiben
LLs sind dynamisch, wenn auch ein bisschen langsamer, aber du musst nicht wissen, wieviel Elemente reinmüssen. Ich bevorzuge immer LLs, weil Arrays mir viel zu begrenzt sind.