Performance Results for ThreadingModel=“Both”

This section captures the performance results when the ThreadingModel of CLSID_Details is ThreadingModel="Both". To make the discussion easier, concentrate on the VoidCall column in each table.

Note that for all in-process method invocations, the client and the server share the same apartment, because in-process COM classes that support ThreadingModel="Both" can be loaded into any client apartment (STA or MTA). Method invocations are direct. Thus, if you were to put a COM object within in-process servers, try to support TheadingModel="Both". If you don’t do this, you might as well build an out-of-process server instead, because an out-of-process server is much more fault-tolerant than an in-process one.

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

 

FirstCall

VoidCall

ArrayCall

LongCall

In-process

0.000005

0.000005

0.000005

0.000007

Local

0.000909

0.000430

0.000410

0.001978

Remote

0.844881

0.001794

0.001960

0.017808

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

 

FirstCall

VoidCall

ArrayCall

LongCall

In-process

0.000005

0.000005

0.000005

0.000006

Local

0.000617

0.000090

0.000098

0.000722

Remote

0.045469

0.001706

0.001882

0.016604

Table B-12. Client Apartment: MTA (MTAThread2)

 

FirstCall

VoidCall

ArrayCall

LongCall

In-process

0.000005

0.000005

0.000005

0.000006

Local

0.000761

0.000094

0.000100

0.000750

Remote

0.038146

0.001692

0.001906

0.016598

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.