Persona 3 FES-Rechner - Algorithmische Optimierung (2), speichert Geometry die Erde!

Eine kurze Zusammenfassung aus dem letzten Beitrag. mit einigen Optimierungen, können wir die Anzahl der Kontrollen für gültige Fusionen von jeweils und reduzieren. In diesem Beitrag möchte ich zeigen, dass wir können, wie so oft, dies zur Erhöhung der Speicherbedarf des Programms auf die Kosten zu senken.







Caching Persona Ebenen

Das erste, was zu bemerken ist, dass wir das Niveau vorhersagen kann, eine Persona wir bekommen Sicherung unabhängig von der aktuellen Persona im Inventar, da sie nur durch die soziale Verbindung im Zusammenhang mit der Persona Arkana beeinflusst wird. Deshalb können wir die Pegel aller möglichen Persona cachen, die sich als nützlich für Dreieck-Fusionen kommen wird.

Eine Brute-Force-Implementierung eines Cache-Schema für die Fusion Ergebnisse würde ein zweidimensionales Array (dreidimensionales Dreieck für Fusionen) verwenden, um die Ergebnisse jeder möglichen Fusion zu speichern. Jedoch aufgrund der Regeln der Fusionen, ein großer Teil der Kombinationen von Persona ist tatsächlich ungültig. Für die normalen Spread-Fusionen ist die Anzahl der möglichen Kombinationen, mit nur 9998 von ihnen in einem gültigen Persona führt. Dieser Effekt wird noch im Fall von Dreiecksfusionen ausgesprochen, wobei die möglichen Kombinationen betragen. Die Anzahl der gültigen Fusionen, wenn von der Persona Start besitzt den Benutzer zur Zeit ist abhängig von den Ebenen der Persona, wenn wir das Basisniveau jeden Persona verwenden, gibt es nur 13.344 Kombinationen in einem neuen Persona führen.

Während der Befüllung des Cache, können wir die Fusionen in einer solchen Art und Weise speichern, dass wir eine Liste aller Fusionen erhalten können, die in einem bestimmten Persona führen. Daher jetzt, dass wir nicht wie bisher alle Kombinationen überprüfen müssen, können wir diese Fusionen auslassen, die in einer Persona führen würden wir bereits in der Gruppe von erstellt Persona haben. Darüber hinaus konnten wir die Listen der Persona, die für eine bestimmte Persona als Zutaten erscheinen zwischenzuspeichern, so konnten wir diese Liste mit dem verfügbaren Persona überprüfen, um zu sehen, ob es überhaupt möglich ist, die Persona von den verfügbaren zu erstellen. Allerdings würde ich vermuten, dass in diesem Fall ist es einfacher, nur alle von ihnen zu überprüfen und fast die gleiche Geschwindigkeit.







Das Caching-Schema natürlich kommt zu einem Speicherkosten. Für jede normale Ausbreitung Fusion, müssen wir die zwei Zutat Persona sowie die daraus resultierende Persona speichern. Da es 169 Persona im Spiel ist, wird ein Verweis auf einen Persona in ein Byte passen. Deshalb brauchen wir 3 Byte ein Fusionsergebnis zwischenzuspeichern. Wie oben erwähnt, gibt es 10.580 gültige Fusionen möglich, auf der Menge aller Persona, deshalb haben wir 3 * 10580 Bytes, die etwa 31 KB. Für die Dreieck Ausbreitung Fusionen, können wir nicht eine genaue Zahl geben, ohne die tatsächlichen Niveaus des Benutzers Persona. Meine Vermutung ist, dass die Zahl von allen Persona an ihrer Basis Ebenen führt, 13986, auf den schlimmsten Fall nahe ist, was bedeutet, dass wir (mit dem zusätzlichen Byte für die dritten Persona) 4 * 13986 Bytes benötigt = 55 KB. (Der Persona-Rechner verwendet mehr Speicher aufgrund nicht eine spärliche Array Implementierung und Speicher von Informationen über Persona Objektreferenzen mit (32/64 Bit) und nicht den Zahlen).

Das Caching Triangle Fusion Ergebnisse

Eine wichtige Sache, über das Caching Ergebnisse Dreieck Fusion ist der folgende: In Dreieck-Fusionen, die höchste tatsächliche (nicht Basis) Ebene der drei beteiligten Persona erforderlich ist, in dem, um herauszufinden, um sie zu verschmelzen. Daher muss ein Cache für Dreieck-Fusionen die Pegel der Persona verwenden, in dem aktuellen Kompendium des Benutzers. Um getestet, um die Lage sein, die Sortier jedes Mal eine beliebige Menge von 3 Persona zu verzichten, können wir das gleiche Ergebnis für jede Permutation der Fusion im Cache speichern. Für die Persona, die noch nicht im Kompendium der Spieler sind, können wir ihre Ebene auf der Grundlage der sozialen Verbindung Reihen vorhersagen. Auf diese Weise kann die Persona in beliebiger Reihenfolge eingegeben wird, auf Kosten von mehr Speicher für die redundanten Informationen für Permutationen verwenden.

Artikelnavigation

Lassen Sie eine Antwort Antworten abbrechen