Ich habe gerade eben einen Test durchgeführt und die erste und zweite Möglichkeit verglichen.
Ich habe folgende Scripte Verwendet um die Performance zu vergleichen:
Das Update läuft jedes Frame, je nach Wert von @check wird die Passierbarkeit an der Position (1,1) beliebig oft getestet.
Das Ergebniss:
Die Framerate betrug am Anfang des Testes konstante 40.
Ich habe die Variable @check kontinuirlich pro Frame um 1 erhöht.
Als @check ungefähr den Wert 350 angenommen hatte sank die Framerate auf 37 - 39.
Von da an aufwärts sank sie stetig weiter bis ich um den Wert 1000 für @check bereits 10 Frames pro Sekunde verloren habe.
Den gleichen Test mit einer Tabelle:
Ich habe eine normale Table benutzt mit den Maßen 640 x 480.
Das Ergeniss:
Zu beginn brauchte der Computer eine kurze Zeitspanne (nicht mehr denn eine Sekunde) um die Tabelle zu erstellen.
Die Performance begann bei 39 und blieb konstant bis die Variable @check ungefähr bei 5000 angekommen ist. Von da an lag die Framerate bei 38 für die nächsten Tausend Werte von @check.
Ich habe den Test an dieser Stelle abgebrochen, ich denke es wurde genug bewiesen, dass die Tabelle die Effizienz enorm verbessern würde.
Mit der BitTable2D welche du geschrieben hast war die Performance zwar besser als mit der Berechnung durch die Pathing Map allerdings weitaus schlechter als mit der normalen Tabelle.
Die Framerate sank hier bereits bei einem Wert von ungefähr 850 auf 36 - 38.
Würde eine Art hybrid-Lösung funktionieren?
Zum Speichern der Werte einen String welcher beim betreten der Karte in eine Table umgewandelt werden würde?
350 Abfragen pro Frame sind doch ganz gut. Angenommen jedes Event bewegt sich jeden Frame, so könntest du 350 Events bewegen lassen mit minimalem Framerateverlust.
Angenommen ich würde nichts anderes machen als diese 350 Objekte bewegen zu lassen.
Was würdest du mir empfehlen? Sollte ich die Tabellen nutzen?
Der Code dürfte nicht schwerer zu schreiben sein, die Performance verbessert sich bewiesenermaßen und dank der von dir geschriebenen Tabellen Klasse sollte auch der Speicherplatzbedarf geringer ausfallen.
Ich habe die BitTabelle getestet und ich muss gestehen, ich bin begeistert.
Die Resultate sind bei weitem über allen meinen Erwartungen, die Größe der Tabelle hat sich von 600kb auf 1kb verringert.
Ganz recht, ohne Tabelle ist meine Map 4kb groß, mit der BitTabelle 5kb.
Den allergrößten Dank für deine Zeit, es ist eine gigantische Hilfe gewesen.