Performance Results for ThreadingModel=“Apartment”

This section captures the performance results when the ThreadingModel of CLSID_Details is ThreadingModel="Apartment". To make the discussion easier, concentrate on the VoidCall column in each table. In Table B-4, note the following:

  • For in-process method invocations, the client and the server share the same apartment. This implies that method calls are made directly, without marshaling.

  • From the data shown in Table B-4, a direct method call is about 170 times more efficient than a local out-of-process method invocation. It is about 1800 times more efficient than a remote out-of-process method invocation.

For Table B-5 and Table B-6, note the following:

  • The client apartment is different from the server apartment. This implies that marshaling will result.

  • For all in-process method invocations, the client apartment marshals interface pointers between itself and a different apartment, a different STA.

  • In-process and local out-of-process method invocations are essentially equivalent, when the client and server exist in different apartments.

Table B-4. Client Apartment: STA (Secondary STA Thread)

 

FirstCall

VoidCall

ArrayCall

LongCall

In-process

0.000005

0.000006

0.000005

0.000007

Local

0.000812

0.000172

0.000183

0.001776

Remote

0.039747

0.001798

0.002399

0.017383

Table B-5. Client Apartment: MTA (MTAThread1)

 

FirstCall

VoidCall

ArrayCall

LongCall

In-process

0.000103

0.000094

0.000103

0.000808

Local

0.000612

0.000091

0.000099

0.000795

Remote

0.037605

0.001695

0.001885

0.016981

Table B-6. Client ...

Get Learning DCOM now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.