Hui, das geht gut
Objekt im Main Thread (STA) erstellt, über GIT gemarshalt und im MTA verwendet:
GIT-Marshaling-Kosten: ca. 320 us
RPC-Call-Kosten*: ca. 27 us/call
Objekt im MTA erstellt, über GIT gemarshalt und im MTA verwendet:
GIT-Marshaling-Kosten: ca. 2 us
RPC-Call-Kosten*: ca. 27 us/call
In einem unterschiedlichen Apartment ist das über den GIT Marshalen also ca. 10x ** teurer als der RPC-Call.
Im selben ist es ca. 1/10 ** so teuer -- auch wenn man selbst gar nicht weiss dass es das selbe Apartment ist. Was ich sehr gut finde.
*: Das COM Objekt lebt in einem anderen Prozess auf der selben Maschine ("out-of-process COM server"). OK, die im anderen Prozess anfallenden Dispatch-Kosten kommen noch dazu, ist aber Standard COM - ATL Zeugs. Die "eigentliche" Funktion die das ganze implementiert tut aber "nix".
**: Ja, ich weiss dass 10 x 27 nicht 320 ist und dass 10% von 27 auch nicht 2 sind. Mir geht's aber nur um Grössenordnungen.