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 |
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access