Josh can probably provide better comment on roscpp specifics. At a high level, C Turtle improvements include: * roscpp: much better *intra*process latency performance * nodelets: basically our alternative to shared memory that takes advantage of the improved roscpp intraprocess performance * rospy: much better serialization performance (thanks to James Bowman) Also, we do have a UDP transport for roscpp. It has been slightly improved since Box Turtle, but it is not very sophisticated in terms of protocol. If the criteria is latency, then it should certainly do better on that metric than TCP. These performance metrics are always difficult, because with an actual robot you want to know what happens with different message sizes, flaky wifi connections, etc... I try to always include a link to what the ICE people have to say when it comes to performance analysis, which I've included in the FAQ here: http://www.ros.org/wiki/FAQ#How_does_ROS_compare_in_terms_of_performance.3F Basically, performance really only matters if you are at a bottleneck, otherwise it's not a relevant criteria for selecting middleware. When we see a bottleneck, we develop something like nodelets, then we focus back on tools, integration, and libraries, which, in the end, we think are more important for developers. - Ken On Thu, Sep 9, 2010 at 5:35 PM, Alex Barvo wrote: > Ken, > > The paper you pointed to was using Box Turtle and found that performance of > ROS wss pretty good compared to (what appears to be very optimised) LCM. > Do you think C-turtle got any improvements in this area? > > From paper: > >>The ROS TCP transport achieves high throughput when the maximum queue >> length ( > > q) is set to infinity, but at the > >>expense of message latency. Various settings of > > q provide an adjustable tradeoff between throughput and latency. > > On Thu, Sep 9, 2010 at 12:06 PM, Ken Conley wrote: >> >> Hi Konrad, >> >> If you read this paper from the authors of LCM, you will find that the >> performance of ROS, LCM, and IPC are generally comparable (note: the >> article tests LCM's UDP implementation against ROS' TCP >> implementation): >> >> http://lcm.googlecode.com/files/2010-huang-olson-moore-lcm-iros.pdf >> >> Comparing any middleware to "raw TCP" is generally difficult to come >> to conclusions, especially without including exact information on how >> your test was conducted. With any middleware, there is the overhead of >> (un)marshaling the data into individual messages.  The size and >> composition of these messages is a significant factor in any >> performance numbers that result. >> >> - Ken >> >> On Thu, Sep 9, 2010 at 11:48 AM, Konrad Banachowicz >> wrote: >> > Dear all, >> > I recently done some testing on ROS communication performence. >> > There are the reesults : >> >                           throughput [MB/s]     time [s]           data >> > [MB] >> > ROS                 7.25906                      4.827058      35.0399 >> > raw TCP          56.8430                      8.387205      476.75466 >> > POSIX MQ      124.36626                  3.834136      476.837158 >> > >> > That shows grate overhead of ROS communication. >> > I looked on code, I found that the communication code is very >> > complicated >> > and contains many locks and queues. It's also integrate interprocess and >> > intraprocess communication. This with all callback stuff make whole >> > communication overcomplicated. >> > >> > I think this show serious problem with design of whole network stack in >> > ROS. >> > >> > I will do some more testing. >> > >> > Pozdrawiam >> > Konrad Banachowicz >> > >> > _______________________________________________ >> > ros-users mailing list >> > ros-users@code.ros.org >> > https://code.ros.org/mailman/listinfo/ros-users >> > >> > >> _______________________________________________ >> ros-users mailing list >> ros-users@code.ros.org >> https://code.ros.org/mailman/listinfo/ros-users > > > _______________________________________________ > ros-users mailing list > ros-users@code.ros.org > https://code.ros.org/mailman/listinfo/ros-users > >