WCF and NetNameDPiPipeBinding are poor performance

I am using a WCF service with netNamedPipeBinding to transfer large amounts of data (a long list of objects) to the client (on the same machine of course).
The problem is the whole The call takes about 20 seconds to transfer ~250MB of data, which is about 10 MB per second. I want the transfer rate to be much faster when sharing memory. Does anyone know how to improve my performance and transfer rate?
This is my app.config file:


openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
transactionFlow="false" transferMode="Buffered" transactionProtocol=" OleTransactions"
hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483647"
maxBufferSize="2147483647" maxConnections="10" maxReceivedMessageSize="2147483647">
maxBytesPerRead="4096" maxNameTableCharCount="2147483647" />




Thank you very much!

As the comments said, it may not be the transmission rate that caused the problem, but more serialization .

There are three things to consider:

>CPU usage for serialization and deserialization
>Keep objects in memory
>Transfer Rate

To send 250 MB through it, first serialize, then send, then deserialize. This may result in 3 copies of data in memory, which may cause disk jitter.

< p>We ran into a similar problem a few years ago, and finally switched to calling the dll directly, it takes about 1 millisecond to pass the memory reference to the list.

I am using The WCF service with netNamedPipeBinding transmits a large amount of data (very long list of objects) to the client (on the same machine of course).
The problem is that the entire call takes about 20 seconds to transmit ~250MB of data, which is about 10 MB per second. I want the transfer rate to be much faster when sharing memory. Does anyone know how to improve my performance and transfer rate?
This is my app.config file:


openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
transactionFlow="false" transferMode="Buffered" transactionProtocol=" OleTransactions"
hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483647"
maxBufferSize="2147483647" maxConnections="10" maxReceivedMessageSize="2147483647">
maxBytesPerRead="4096" maxNameTableCharCount="2147483647" />




Thank you very much!

As the comments said, it may not be the transmission rate that caused the problem, but more serialization.

There are three Things to consider:

CPU usage rate for serialization and deserialization
>keep objects in memory
>transfer rate

to send through it 250 MB, first serialize, then send, then deserialize. This may result in 3 copies of data in memory, which may cause disk jitter.

We ran into a similar problem a few years ago, And finally switched to directly calling the dll, it takes about 1 millisecond to pass the memory reference to the list.

Leave a Comment

Your email address will not be published.