Übergang von verwaltet zu systemeigen vermeiden



  • Hallo!

    Wenn ich eine einfache Zuweisung mache, etwa

    double d1,d2;
    d1 = d2;
    

    dann ist kein Übergang von verwaltet zu systemeigen nötig.
    Auch wenn viele elementare Operationen hintereinander
    in einer Schleife ausgeführt werden, wird kein "Managed Code"
    eingefügt.

    Sobald aber eine verwaltete Funktion aufgerufen wird, dann
    werden in diese mehrere Assemblerinstruktionen geschrieben,
    die mit dem eigentlichen Code nichts zu tun haben.
    Ich vermute stark, dass diese u.a. mit der Garbage
    Collection zu tun haben (um die Ausführung des Codes zu
    unterbrechen).
    Um diese unnötigen Instruktionen zu vermeiden, könnte ich
    die Funktion als systemeigen kompilieren - der Overhead in
    der Funktion ist weg, aber dafür hab ich einen Übergang von
    verwaltetem zu systemeigenem Code, und das ist ja auch nicht
    besser...

    Lässt sich das irgendwie unterbinden? Insbesondere,
    wenn die Funktion nur wenige elementare Instruktionen enthält,
    die nur auf systemeigenen Speicher zugreifen. Die Funktion
    kann jedoch nicht inline compilert werden kann, da sie als
    virtual deklariert ist.)

    Alex


Log in to reply