Listen oder Objektpools?
Übersicht

![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier ist auch noch einmal eine ganz einfache Liste:
BlitzMax: [AUSKLAPPEN] SuperStrict mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
Macintosh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ups. habe mich geirrt. sorry ^^ :( | ||
![]() |
DaysShadow |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nochwas, warum bitte kann der String Operatoren überladen? Weil mann "Hallo" + " Welt" schreiben kann?
Das ist einfach nur im Compiler oder Parser oder whatever festgelegt, dass das geht, nehme ich an. Oder gehts um was ganz anderes und ich stehe auf dem Schlauch? ^^ |
||
Blessed is the mind too small for doubt |
![]() |
Shinkiro1ehemals "Espada" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie schon erwähnt, der Performance Unterschied ist meist zu gering.
Ich kann mich aber erinnern, dass eine List in einer ForEach Loop schneller war als ein Array. Aber häng dich nicht an solchen Kleinigkeiten auf. Das, was man meist wirklich optimieren kann ist das Gameplay ;D |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo, in der heutigen Zeit würde ich empfehlen als erstes das zu verwenden womit man es einfacher umsetzen kann, bzw. was halt Sinn macht in der jeweiligen Situation. Wie gesagt: Listen bei dynamischer Anzahl an Objekten, Array bei festgelegter Anzahl.
Wenn man merkt es ist viel zu langsam, dann kann man mit optimieren beginnen. In den meisten Fällen läuft es nämlich auch so schnell genug und man hätte nur unnötig Zeit vergeudet. Die Sache mit dem IsInUse ist denke ich auch nicht schneller, eher langsamer. Denn dazu muss man ja immer durch das ganze Array gehen, ein Objekt finden dass noch nicht "in use" ist und dieses dann aktivieren und die Eigenschaften setzen etc... Es sei denn dieser ObjektPool hätte eine Liste mit aktiven Objekten und eine Queue mit inaktiven. Dann könnte man von der Queue ein inaktives Objekt holen, die Eigenschaften setzen und es in die Liste der aktiven einfügen. Beim Löschen dann umgekehrt. (Aber das bringt schlussendlich auch nichts imho). In der Zeit wo die meisten Systeme 2 - 8 GB RAM haben muss man auch nicht mehr soo extrem auf jedes einzelne Byte Speicherverbrauch achten, viel wichtiger ist das inzwischen bei der Netzwerkkommunikation. Fazit: Die meisten zerbrechen sich über sowas im Voraus viel zu sehr den Kopf. Lieber mehr Zeit in die Programm/Spiel-Logik ansich investieren ![]() |
||
![]() |
Lastmayday |
![]() Antworten mit Zitat ![]() |
---|---|---|
Als um das thema mit dem speed von listen und arrays mal zu klären:
Benchmark: AddLast 1000000 times 361ms For eachin run 84ms remove takes 2888ms AddFirst 526ms For eachin run 89ms Clear takes 107ms fillup a Array 311ms run a Array 35ms clear a Array 56ms AddLast in list1 AddLast in list2 For eachin run in list1(100) and list2(1000000) totaltimes: 100000000 11280ms For eachin run in list2(1000000) and list1(100) 2483ms (Tipp: warum der unterschied zwischen den letzenbeiden so groß ist? es hatt was mit dem L1 und L2 cache zu tun . . . ) ![]() Code: BlitzMax: [AUSKLAPPEN] SuperStrict |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group