benchmark.cpp
Go to the documentation of this file.
1 
3 #include <boost/algorithm/string.hpp>
4 #include <boost/serialization/serialization.hpp>
5 #include <boost/utility/string_ref.hpp>
6 #include <geometry_msgs/Pose.h>
7 #include <sensor_msgs/JointState.h>
8 #include <sstream>
9 #include <iostream>
10 #include <chrono>
12 
13 
14 #include <benchmark/benchmark.h>
15 
16 
17 using namespace ros::message_traits;
18 using namespace RosIntrospection;
19 
20 
21 static std::vector<SubstitutionRule> Rules()
22 {
23  std::vector<SubstitutionRule> rules;
24 
25 
26  rules.push_back( SubstitutionRule( "transforms.#.transform",
27  "transforms.#.header.frame_id",
28  "transforms.#" ));
29 
30  rules.push_back( SubstitutionRule( "transforms.#.header",
31  "transforms.#.header.frame_id",
32  "transforms.#.header" ));
33 
34  rules.push_back( SubstitutionRule( "position.#", "name.#", "@.position" ));
35  rules.push_back( SubstitutionRule( "velocity.#", "name.#", "@.velocity" ));
36  rules.push_back( SubstitutionRule( "effort.#", "name.#", "@.effort" ));
37  return rules;
38 }
39 
40 
41 static void BM_Joints(benchmark::State& state)
42 {
44 
46 
48  "joint_state",
49  main_type,
51 
52  parser.registerRenamingRules( main_type, Rules() );
53 
54  sensor_msgs::JointState js_msg;
55 
56  js_msg.name.resize(6);
57  js_msg.position.resize(6);
58  js_msg.velocity.resize(6);
59  js_msg.effort.resize(6);
60 
61  const char* suffix[6] = { "_A", "_B", "_C", "_D" , "_E", "_F"};
62 
63  for (size_t i=0; i< js_msg.name.size() ; i++)
64  {
65  js_msg.header.seq = 100+i;
66  js_msg.header.stamp.sec = 1234;
67  js_msg.header.frame_id = std::string("frame").append(suffix[i]);
68 
69  js_msg.name[i] = std::string("child").append(suffix[i]);
70  js_msg.position[i] = 10 +i;
71  js_msg.velocity[i] = 20 +i;
72  js_msg.effort[i] = 30 +i;
73  }
74 
75  std::vector<uint8_t> buffer( ros::serialization::serializationLength(js_msg) );
76  ros::serialization::OStream stream(buffer.data(), buffer.size());
78 
80  RenamedValues renamed_values;
81 
82  while (state.KeepRunning())
83  {
84  parser.deserializeIntoFlatContainer("joint_state", absl::Span<uint8_t>(buffer), &flat_container, 100);
85  parser.applyNameTransform("joint_state", flat_container, &renamed_values );
86  }
87 }
88 
90 
92 
static void write(Stream &stream, typename boost::call_traits< T >::param_type t)
BENCHMARK_MAIN()
RosIntrospection::Parser parser
void applyNameTransform(const std::string &msg_identifier, const FlatMessage &container, RenamedValues *renamed_value)
static std::vector< SubstitutionRule > Rules()
Definition: benchmark.cpp:21
BENCHMARK(BM_Joints)
static void BM_Joints(benchmark::State &state)
Definition: benchmark.cpp:41
bool deserializeIntoFlatContainer(const std::string &msg_identifier, absl::Span< uint8_t > buffer, FlatMessage *flat_container_output, const uint32_t max_array_size) const
FlatMessage flat_container
uint32_t serializationLength(const T &t)
std::vector< std::pair< std::string, Variant > > RenamedValues
ros::serialization::OStream stream(buffer.data(), buffer.size())
int i
std::vector< uint8_t > buffer(ros::serialization::serializationLength(imu))
void registerRenamingRules(const ROSType &type, const std::vector< SubstitutionRule > &rules)
void registerMessageDefinition(const std::string &message_identifier, const ROSType &main_type, const std::string &definition)


type_introspection_tests
Author(s): Davide Faconti
autogenerated on Fri Apr 13 2018 02:21:58