More fixes to remove message allocation/copying from the equation

This commit is contained in:
Josh Faust 2010-02-09 06:20:22 +00:00
parent 3094b7a71f
commit ff404880a3
1 changed files with 12 additions and 9 deletions

View File

@ -377,10 +377,8 @@ LatencyTest::LatencyTest(uint32_t count_per_stream, uint32_t streams, uint32_t m
void LatencyTest::receiveCallback(const LatencyMessageConstPtr& msg, ros::Publisher& pub)
{
// Store off receipt time so we don't count the message copy time
ros::WallTime receipt_time = ros::WallTime::now();
LatencyMessagePtr reply(new LatencyMessage);
*reply = *msg;
LatencyMessagePtr reply = boost::const_pointer_cast<LatencyMessage>(msg);
reply->receipt_time = receipt_time.toSec();
pub.publish(reply);
//ROS_INFO("Receiver received message %d", msg->count);
@ -443,6 +441,15 @@ void LatencyTest::sendThread(boost::barrier* all_connected, uint32_t thread_inde
}
}
std::vector<LatencyMessagePtr> messages;
for (uint32_t i = 0; i < streams_; ++i)
{
LatencyMessagePtr msg(new LatencyMessage);
msg->thread_index = thread_index;
msg->array.resize(message_size_);
messages.push_back(msg);
}
all_connected->wait();
r.message_count = 0;
@ -450,14 +457,10 @@ void LatencyTest::sendThread(boost::barrier* all_connected, uint32_t thread_inde
const uint32_t count = count_per_stream_;
const uint32_t streams = streams_;
const uint32_t total_messages = count * streams;
const uint32_t size = message_size_;
for (uint32_t j = 0; j < streams; ++j)
{
LatencyMessagePtr msg(new LatencyMessage);
msg->thread_index = thread_index;
msg->array.resize(size);
msg->publish_time = ros::WallTime::now().toSec();
pubs[j].publish(msg);
messages[j]->publish_time = ros::WallTime::now().toSec();
pubs[j].publish(messages[j]);
}
while (r.latencies.size() < total_messages)