Auflösung bei der Komplierung (Pointer oder nicht Pointer)?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von us4711.

    Auflösung bei der Komplierung (Pointer oder nicht Pointer)?

    Zur Zeit versuche ich tiefer in die Geheimnisse des DataGridView einzudringen. Insbesondere erstelle ich eine eigene DataGridViewHeaderCell.
    ich muss in dieser neuen Zelle recht intensiv auf die DataGridViewColumn dieser Zelle zugreifen, und tue dies mit Dim LokaleVeriable as MeinTyp = Me.OwningColumn.GesuchterWert.
    Ich VERMUTE, das hier Pointer schon zu Komplierzeit gesetzt werden, und dadurch ein Höchstmass an Performance erreicht wird. Aber Glauben heisst, nicht Wissen.
    Kann mir das Forum hier mit einer Information weiterhelfen? Gibt es effizientere Wege?
    Und ja, es MUSS der Weg über die DataGridViewHeaderCell gegabgeb werden.
    Hi,

    alle Referenztypen sind in .NET Pointer auf deren Daten im Heap.
    Und was meinst zu mit "zur Kompilierzeit"?
    Es gibt quasi 2 Kompilierzeitpunkte. Einmal wird dein Code in CIL kompiliert und dann wird zur Laufzeit CIL zu Maschinecode kompiliert.
    Das ist meine Signatur und sie wird wunderbar sein!

    Mono schrieb:

    Und was meinst zu mit "zur Kompilierzeit"?
    Nun, ich meine den Code, der letzlich das tut (hoffentlich) was er soll. Scheint also nach der Komplierung zu CIL zu sein.
    Seh' ich das also richtig, das zu DIESEM Zeitpunkt keine Berechnungen zur Ermittlung des Speicherplatzes des gewünschten Wertes mehr durch geführt werden, sondern sich dieser im direkten Zugriff befindet?

    @ErfinderDesRades
    Ich versthe nix'.
    Merk ich schon. Aber lass man, @Mono ist auf dem richtigen Weg.

    Gar nichts derart passiert bei C# zur Compile-Zeit man weiß ja noch nicht wo das Objekt im Memory sein wird, also eine Addition eines Offsets festgestellt anhand der vtable(und selbst das ermitteln dieser passiert mW zur Laufzeit, der JIT wird dann vmtl. optimieren und beim nächsten aufruf nicht nochmal die VTable duchsuchen) zur tatsächlichen Position. Damit haste dann immerhin die Referenz und eine Referenz muss bei der Verwendung natürlich immer dereferenziert werden kostet natürlich auch noch Zeit.
    Also wenn du die Möglichkeit hast etwas(sinnvoll) auf dem Stack zu machen, dann tu es.
    Aber bei dem wie sich das anhört ist das eher nicht möglich, eher noch etwas Richtung MemoryPool, aber das ist bei allem was Richtung Businessanwendung geht eher hinderlich als positiv.

    Ansonsten gilt immer: Ohne Code kann man überhaupt nicht sagen, was da verbessert werden kann...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---