finalMQ - Performance
finalMQ - Performance

finalMQ - Performance

In this article, I will show the throughput of asynchronous request/reply messages of two C++ communication frameworks:

finalMQ supports several protocols and data encodings, but for the comparison, I chose the Protobuf encoding, Also gRPC uses Protobuf.

Environment

The tests have been done on an Ubuntu 18.04 LTS system inside a virtual machine on a Windows 10 host (Intel Core I7-7500U).

Messages

On both frameworks the messages of the helloworld example (finalmq) were used with the request data of one person.

HelloRequest{{ {"Bonnie","Parker",Sex::FEMALE,1910,{"somestreet", 12,76875,"Rowena","USA"}} }}        


Test

The clients fire 100000 requests in a for-loop and wait for 100000 replies. The time was measured from the first sent request till the last reply was received. The communication effort consists of serialization/deserialization of the data and the transfer of the serialized messages. The server process and the client process are on the same network node. The tests have been done with two kind of sockets:

  • TCP
  • Unix Domain Socket

Calculation

The tests have been done several times and an average duration was used for the throughput calculation. The throughput is calculated with: throughput = 100000 / average duration. So, the throughput is a value that tells how many request/reply messages can be processed per second.

Result

Unix Domain Socket

No alt text provided for this image



gRPC: 53000 msg per second

finalMQ: 74000 msg per second





TCP Socket

No alt text provided for this image



gRPC: 49000 msg per second

finalMQ: 60000 msg per second




Conclusion

Both frameworks have a very high message throughput. FinalMQ is a little bit better.

When you decide for finalMQ, then you will get a very high performance on your message communication.


Advantages of finalMQ

  • High Performance
  • Multiple protocol support (several socket protocols, HTTP, custom protocols)
  • Multiple data encodings (Protobuf, JSON, custom data encodings)
  • Direct access of finalMQ server with browser (httpserver:json)
  • Server can send notifications to its clients (Server Push)
  • Integration into the Qt environment/threading
  • Simple API. Easy to use.
  • No dependency to other C++ libraries (only openssl for SSL/TLS)
  • Unit Tests are available

Is the client and server on the same Ubuntu VM?

To view or add a comment, sign in

More articles by David Beck

  • finalMQ talks MQTT5

    The Open Source Communication Library finalMQ supports multiple protocols and also multiple encoding formats. The…

  • finalMQ

    I am glad to announce that my OpenSource framework "finalMQ" is in a first good shape to introduce it to the public…

    3 Comments

Others also viewed

Explore content categories