Enginedesign: Speicher oder Speed??



  • Moinsen,
    Ich hab mir gestern mal so den code meiner engine/directx wrappers angeschaut (auf der suche nach optimierungsmöglichkeiten.... un da gibt es VIIIIEEEEEL zu tun ^^) und dabei kam eine essenzielle frage auf.
    Situation:
    Ich speichere zB in meiner Surface Klasse viele informationen, so zum Beispiel auch das D3DSURFACE_DESC Objekt der Surface. dies lasse ich in der Create Methode ermitteln. nun habe ich in der Surface klasse auch eine Methode, um auf diese Struktur zuzugreifen (GetDesc).
    Frage:
    Ist es sinnvoll, solche informationen (die Surface Desc) in der entsprechenden Klasse zu speichern? oder wäre es besser, bei jedem aufruf der GetDesc meiner Surface Klasse die Desc neu von Direct3D ermitteln zu lassen, und diese (temporäre) struktur zurück zu geben? Die wäre doch sicher langsamer, oder?
    danke schonmal



  • es kommt immer drauf an, wie oft du auf die desc zugreifen musst.wenn du pro frame 7 aufrufe hast, dann is es natürlich schon günstig.



  • nun ja, aufrufe von GetDesc kommen immer dann vor, wenn ich etwas über die surface (in diesem beispiel, kann auch ein vb/ib, eine textur oder ähnliches sein, mache das in den klassen genau so) wissen will, da ich zB größe und Format nicht anderweitig speichere, sondern eben nur in der desc.
    Nun wollte ich jedoch letztens eine Effect Klasse schreiben (Wrapper für ID3DXEffect). Besonders bei dieser Klasse kam mir diese Frage. inwieweit ist es sinnvoll einzelne infos über den effekt zu speichern? sicherlich macht es noch (wenn auch nur ein bisschen^^) sinn, die descs der einzelnen techniques und passes zu speichern, aber wie sieht es mit handles zu einzelnen funktionen oder gar parametern aus?? sollte ich diese aus gründen der geschwindigkeit bei der initialisierung alle ermitteln??
    eine "it-depends-antwort" trifft hier nur "halbwegs" zu, da ich ja nie weiß, was der (potentielle^^) user mit meinem wrapper macht...


Anmelden zum Antworten