Object Request Broker (Object Request proxy): Ice, WCF and Java RMI

Source: Internet
Author: User

The text is excerpted from
Choosing middleware: why performance and scalability do (and do not) matter
By Michi Henning, Chief Scientist, zeroc, Inc.
ArticleThe author is also the author of <advanced CORBA (r) programming with C ++)>

Test Environment
Dual-core 2.2 GHz athlon with 2 GB of memory running Windows XP Professional SP3.
Dual-core 2.0 GHz Mac Mini with 2 GB of memory running Windows Vista Ultimate SP1.

 

Compiler
C ++ Visual Studio 2008
C # Visual Studio 2008,. Net version 3.5
Java 1.6.0 JDK

Optimized Compilation speed, 64-bit for VistaCode. Ice 3.30

Latency
Latency is an important factor in evaluating middleware. It is defined as the time when the client calls the server and then receives the result. The minimum latency is defined as the call return time of function o (no input parameter, no return value.

Source code

Ice
Interface latency {
Void O (); // shortest possible operation name
};

WCF
[System. servicemodel. servicecontract]
Interface latency {
[System. servicemodel. operationcontract] void O ();
}

RMI
Import java. RMI. Remote;
Import java. RMI. RemoteException;
Public interface latency extends remote {
Void O () throws RemoteException;
}

 

Test Results

Requests/second

 

Ice for. net

Ice for Java

Ice for C ++

WCF binary

WCF soap

RMI

Loopback

6,900

8,000

10,500

~ 6,900

~ 2,300

10,600

Gigabit network

2,300

2,300

2,300

~ 2,190

~ 560

2,220

 

Throughput
Another important factor in evaluating middleware is throughput, which refers to the amount of data that the middleware can transmit per second.

Source code

Ice
Sequence <byte> byteseq;
Interface throughput {
Void sendbyteseq (byteseq B );
Byteseq recvbyteseq ();
};

 

WCF
[Servicecontract]
Interface Test {
[Operationcontract]
Void sendbyteseq (byte [] SEQ );

[Operationcontract]
Byte [] recvbyteseq ();
}

RMI
Import java. RMI. Remote;
Import java. RMI. RemoteException;
Public interface throughput extends remote {
Int byteseqsize = 500000;
 
Void sendbyteseq (byte [] SEQ) throws RemoteException;
Byte [] recvbyteseq () throws RemoteException;
}

 

Test Results 

Throughput loopback

Ice for. net

Ice for Java

Ice for C ++

WCF binary

WCF soap

RMI

Byte seq (send)

630 Mbit/s

800 Mbit/s

1,200 Mbit/s

515 Mbit/s

144 Mbit/s

825 Mbit/s

Byte seq (Recv)

610 Mbit/s

720 Mbit/s

960 Mbit/s

550 Mbit/s

165 Mbit/s

800 Mbit/s

 

Throughput gigabit network

Ice for. net

Ice for Java

Ice for C ++

WCF binary

WCF soap

RMI

Byte seq (send)

520 Mbit/s

660 Mbit/s

740 Mbit/s

425 Mbit/s

140 Mbit/s

283 Mbit/s

Byte seq (Recv)

410 Mbit/s

590 Mbit/s

655 Mbit/s

370 Mbit/s

130 Mbit/s

280 Mbit/s

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.