Autor Beitrag
Fetze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65
Erhaltene Danke: 1



BeitragVerfasst: Do 10.01.08 22:10 
Heyho,

ich habe in einem Tutorial mal gelesen, virtuelle Methoden (== mit virtual deklarierte Methoden) seien langsam.

1. "Stimmt das?" Inwieweit ist eine mit virtual deklarierte Methode langsamer als eine
-- a) nicht überschreibbare Methode oder
-- b) abstrakte Methode?

2. Ich entwickle derzeit eine Ingame-GUI. Diese sollte so anpassungsfähig wie möglich sein, daher erben alle GUI-Objekte von der GUIObject-Klasse, welche mit einigen abstrakten und virtuellen Methoden die nötigen Basisfunktionen zur Verfügung stellt. Nun stellt sich mir die Frage, inwieweit auch die Standardobjekte ("Window", "Button", ...) vererbbar sein sollten; grundsätzlich würde ich sagen "vollständig", aber dafür müsste ich sämtliche objektlokalen Methoden als virtuell deklarieren - damit man auch wirklich alles überschreiben und/oder modifizieren kann. Meine Frage ist, wie es hier mit dem Kosten/Nutzen-Verhältnis aussieht; rechnet sich das noch trotz geringfügigem(?) Performanceverlust?


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Do 10.01.2008 um 21:21
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 10.01.08 23:18 
Ich würde das Thema in einem Wort zusammenfassen: Vernachlässigbar. Es gibt so vieles, über das du dir mehr Sorgen machen solltest, wenn es um Performance geht. Ansonsten solltest du dir überlegen, ob du nicht doch lieber eine unmanaged Sprache benutzen willst :zwinker: .
Im Zweifelsfalle: einfach mal selbst messen.

PS: Der C#-Compiler ruft sogar nicht-virtuelle Methoden virtuell auf - dadurch prüft die CLR beim Aufruf, ob das Objekt auch wirklich nicht null ist.
PPS: Eine abstrakte Methode ist ja nichts anderes als eine leere virtuelle Methode.