# DDS Performance Comparison on Windows for RMW Providers in ROS 2

**URL:** <https://discourse.openrobotics.org/t/dds-performance-comparison-on-windows-for-rmw-providers-in-ros-2/22635>\
**Category:** ROS General\
**Tags:** ros2, dds, fastdds, rmw\
**Created:** [October 11, 2021, 9:28am UTC](https://discourse.openrobotics.org/t/dds-performance-comparison-on-windows-for-rmw-providers-in-ros-2/22635 "2021-10-11T09:28:37Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Daniel\_Cabezas](https://avatars.discourse-cdn.com/v4/letter/d/c6cbf5/32.png) [@Daniel\_Cabezas](https://discourse.openrobotics.org/u/Daniel_Cabezas)\
**Post date:** [October 11, 2021, 9:28am UTC](https://discourse.openrobotics.org/t/dds-performance-comparison-on-windows-for-rmw-providers-in-ros-2/22635/1 "2021-10-11T09:28:37Z")

</div>

Hello ROS community!

Today, we are happy to present to you a DDS middleware performance comparison on Windows platforms.

As you may know, RMW providers that compete to be the default provider for the next ROS 2 release Humble Hawksbill had to submit a report with the results of a complete workbench. You can find these reports [here](https://osrf.github.io/TSC-RMW-Reports/humble/)

Comparing the two reports it can be concluded that Fast DDS is the implementation with the best performance in Linux platforms. Results on Windows platforms are not so clear though. Therefore, eProsima has extended the workbench on Windows platforms to offer a better insight of the performance with the different data sizes. This includes latency results and maximum throughput in interprocess communications. eProsima is interested in showcasing Fast DDS performance in comparison with the competing implementation Cyclone DDS.

**Latency** :

 ![](https://us1.discourse-cdn.com/flex022/uploads/ros/original/2X/2/2f51fc383a70edd2a03bede3e078b1166eefbaef.png "Chart")

 ![](https://us1.discourse-cdn.com/flex022/uploads/ros/original/2X/e/e0ff897e3bedd8827e303d50aef363a06b5b2f99.png "Chart")

**Throughput** :

 ![](https://us1.discourse-cdn.com/flex022/uploads/ros/original/2X/9/97d0cfe5ee21127b61998864bde2e33164a12cab.png "Chart")

**Conclusion**

The results are clear, Fast DDS is the highest performing Tier 1 open source DDS implementation for ROS 2! It especially performs considerably better in both latency and throughput when using data sizes larger than 16 KB. But even for smaller sizes, Fast DDS gets better latency values with a similar throughput.

eProsima will shortly publish the complete workbench description and results on its website, so stay tuned!

---

<div class="post-metadata">

**Author:** ![rex-schilasky](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/rex-schilasky/32/4107_2.png) [@rex-schilasky](https://discourse.openrobotics.org/u/rex-schilasky)\
**Post date:** [October 11, 2021, 10:06am UTC](https://discourse.openrobotics.org/t/dds-performance-comparison-on-windows-for-rmw-providers-in-ros-2/22635/2 "2021-10-11T10:06:44Z")

</div>

The throughput performance of Cyclone DDS seems to be limited by a magic 1Gbps line (by the local udp multicast transport ?), so iceoryx ipc was not configured I assume.

Did you check for data sizes larger 4 MB too ?

---

<div class="post-metadata">

**Author:** ![Jaime\_Martin\_Losa](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/jaime_martin_losa/32/4074_2.png) [@Jaime\_Martin\_Losa](https://discourse.openrobotics.org/u/Jaime_Martin_Losa)\
**Post date:** [October 11, 2021, 11:39am UTC](https://discourse.openrobotics.org/t/dds-performance-comparison-on-windows-for-rmw-providers-in-ros-2/22635/3 "2021-10-11T11:39:28Z")

</div>

Hi @rex-schilasky

CycloneDDS uses Iceoryx for IPC, and Iceoryx has **no support for windows**

Yep, Fast DDS has a clear advantage, as we do support shared memory and zero-copy on windows.

---

<div class="post-metadata">

**Author:** ![rex-schilasky](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/rex-schilasky/32/4107_2.png) [@rex-schilasky](https://discourse.openrobotics.org/u/rex-schilasky)\
**Post date:** [October 11, 2021, 12:19pm UTC](https://discourse.openrobotics.org/t/dds-performance-comparison-on-windows-for-rmw-providers-in-ros-2/22635/4 "2021-10-11T12:19:41Z")

</div>

Hi @Jaime_Martin_Losa, yes - reading the initial post would help before asking. Where can I find the performance workbench that you used to take the measures ? Is this eProsima internal ?

---

<div class="post-metadata">

**Author:** ![Jaime\_Martin\_Losa](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/jaime_martin_losa/32/4074_2.png) [@Jaime\_Martin\_Losa](https://discourse.openrobotics.org/u/Jaime_Martin_Losa)\
**Post date:** [October 11, 2021, 1:23pm UTC](https://discourse.openrobotics.org/t/dds-performance-comparison-on-windows-for-rmw-providers-in-ros-2/22635/5 "2021-10-11T13:23:18Z")

</div>

Everything is very public. The full description is in the TSC RMW report.

---

<div class="post-metadata">

**Author:** ![IkerLuengo](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/ikerluengo/32/11597_2.png) [@IkerLuengo](https://discourse.openrobotics.org/u/IkerLuengo)\
**Post date:** [October 18, 2021, 2:00pm UTC](https://discourse.openrobotics.org/t/dds-performance-comparison-on-windows-for-rmw-providers-in-ros-2/22635/6 "2021-10-18T14:00:49Z")

</div>

> [@rex-schilasky](#):
>
> Did you check for data sizes larger 4 MB too ?

Some quick testing with 8MB show that the throughput starts to fall below the 1GBps with larger sizes on Cyclone DDS (kind of what happens with Fast DDS). I suspect it has to do with the clogging of the history and the publication rate starting to interfere with the maintenance of the internal structures (i.e., deletion of older messages)
