MudGuard: Code vereinfachen

Beitrag lesen

Hi,

ich habe ein Problem, ich soll folgende Code vereinfachen bzw die Lösung ermitteln:

Vereinfachen? Weiß nicht. Vielleicht gibt es eine Formel, um aus a und b direkt das Ergebnis zu ermitteln. Ich seh im Moment nichts derartiges.

(Deutlich) Beschleunigen ginge:

Lege für die Ergebnisse von rechts eine Map an, key ist a + "_" + b.
Guck als erstes in die Map, ob bereits ein Wert vorhanden ist für a + "_" + b.
Wenn ja, gib ihn zurück.
Wenn nein: berechne den Wert, stecke ihn in die Map, und gib ihn zurück.

Gleiches Spiel für links: zweite Map, key ist wieder a + "_" + b.

Damit erhältst Du das Ergebnis von rechts(42,42) sehr schnell!

bei rechts(20,20) kommt es (wenn man die map-Treffer ignoriert) zu

rechtscount: 24171004
linkscount: 24171003
Aufrufen,
die Maps enthalten nur
rechtsmap: 126
linksmap: 119
verschiedene a-b-Kombinationen.

Nimmt man, wenn vorhanden, die Treffer aus der Map, ergeben sich diese Zahlen:
rechtscount: 219
linkscount: 218
rechtsmap: 126
linksmap: 119

Also statt ca. 24 Millionen Aufrufen nur noch etwas über 200.

Bei rechts(42,42) mit Map-Treffer-Berücksichtigung:
rechtscount: 981
linkscount: 980
rechtsmap: 539
linksmap: 497

(die Aufrufzahlen bei Nicht-Berücksichtigung der Map-Treffer hab ich nicht ermittelt - ich brauch meinen Rechner noch für andere Dinge)

bzw wie ist der code zu vereinfachen, dass er in "normaler" zeit ausführbar ist?

Für eine Beschleunigung wird der Code nicht notwendigerweise einfacher, sondern komplizierter.

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.