Re: Use COM for shell extension / TSVNCache communication

Ivan Zhakov <[email protected]>
Newsgroups gmane.comp.version-control.subversion.tortoisesvn.devel
Message-ID <CAPZho08-r54FXvYHxPGzTSeor-610gEjTTpVJE22wCZNPYn83g@mail.gmail.com>
On 24 March 2016 at 20:48, Stefan Küng <[email protected]> wrote:
> On 24.03.2016 07:42, Ivan Zhakov wrote:
>> Hi,
>>
>> Currently Tortoise shell extension uses named pipes for communicating
>> with TSVNCache.exe. I'm considering to change this to use COM for
>> inter-process communication. This should improve performance and
>> concurrency.
>
> Are you sure that COM is faster than a simple pipe? From my experience I
> found COM to be slower. Of course my last attempts at this were five
> years ago so things might have changed...
>
COM performance didn't change significantly in the past five years.
But I expect COM to be faster for several reasons:
1. COM uses LRPC for communication which extremely fast. It uses
shared memory and NDR/NDR64 for marshaling data.
2. Free-threaded COM server uses thread-pool to execute interface methods.
3. There is no ERROR_PIPE_BUSY race condition between client connected
to the pipe and server  created new pipe.
4. The client may call interface methods concurrently from different
threads without using mutex.

There some overhead of using COM, but the transport itself should be
faster. Btw how did you measure performance? Did you use typelibrary
based marshaller or registered separate proxy dll? What threading
model did you use for COM server in your tests?

-- 
Ivan Zhakov

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=3167128

To unsubscribe from this discussion, e-mail: [[email protected]].
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.