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 ...
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