perf_serialization
pointcloud_serdes.cpp
Go to the documentation of this file.
1
/*
2
* Software License Agreement (BSD License)
3
*
4
* Copyright (c) 2008, Willow Garage, Inc.
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
*
11
* * Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* * Redistributions in binary form must reproduce the above
14
* copyright notice, this list of conditions and the following
15
* disclaimer in the documentation and/or other materials provided
16
* with the distribution.
17
* * Neither the name of Willow Garage, Inc. nor the names of its
18
* contributors may be used to endorse or promote products derived
19
* from this software without specific prior written permission.
20
*
21
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
* POSSIBILITY OF SUCH DAMAGE.
33
*/
34
35
#include "test_roscpp/PointCloud.h"
36
#include <cstdlib>
37
#include <cstdio>
38
39
using namespace
ros::serialization
;
40
41
ros::WallTime
t
;
42
43
inline
void
tic
()
44
{
45
t
=
ros::WallTime::now
();
46
}
47
48
inline
double
toc
()
49
{
50
return
(
ros::WallTime::now
() -
t
).toSec();
51
}
52
53
int
main
(
int
,
char
**)
54
{
55
test_roscpp::PointCloud pc;
56
57
const
int
NUM_ITER = 100;
58
const
int
NUM_PTS = 1000000;
59
pc.pts.resize(NUM_PTS);
60
pc.chan.resize(2);
61
pc.chan[0].vals.resize(NUM_PTS);
62
pc.chan[1].vals.resize(NUM_PTS);
63
64
ros::SerializedMessage
m;
65
m.
num_bytes
=
serializationLength
(pc);
66
m.
buf
.reset(
new
uint8_t[m.
num_bytes
]);
67
68
tic
();
69
for
(
int
i = 0; i < NUM_ITER; ++i)
70
{
71
OStream
s
(m.
buf
.get(), m.
num_bytes
);
72
serialize
(
s
, pc);
73
m.
message_start
= m.
buf
.get();
74
}
75
printf(
"avg serialization took %.6f sec\n"
,
toc
() / (
double
)NUM_ITER);
76
77
tic
();
78
for
(
int
i = 0; i < NUM_ITER; i++)
79
{
80
test_roscpp::PointCloud pc2;
81
deserializeMessage
(m, pc2);
82
}
83
printf(
"avg deserization time %.6f sec\n"
,
toc
() / (
double
)NUM_ITER);
84
85
return
0;
86
}
87
t
ros::WallTime t
Definition:
pointcloud_serdes.cpp:41
ros::serialization::OStream
ros::SerializedMessage
ros::SerializedMessage::message_start
uint8_t * message_start
main
int main(int, char **)
Definition:
pointcloud_serdes.cpp:53
s
XmlRpcServer s
ros::serialization
ros::serialization::serializationLength
uint32_t serializationLength(const boost::array< T, N > &t)
ros::WallTime::now
static WallTime now()
ros::WallTime
ros::SerializedMessage::num_bytes
size_t num_bytes
ros::serialization::serialize
void serialize(Stream &stream, const boost::array< T, N > &t)
toc
double toc()
Definition:
pointcloud_serdes.cpp:48
ros::serialization::deserializeMessage
void deserializeMessage(const SerializedMessage &m, M &message)
ros::SerializedMessage::buf
boost::shared_array< uint8_t > buf
tic
void tic()
Definition:
pointcloud_serdes.cpp:43
test_roscpp
Author(s): Morgan Quigley, Josh Faust, Brian Gerkey, Troy Straszheim, Dirk Thomas
, Jacob Perron
autogenerated on Sat Sep 14 2024 02:59:57