I have defined the Protocol Buffers message file as follows:
syntax = "proto3";
package Tutorial;
import "google/protobuf/timestamp.proto";
option csharp_namespace = "Tutorial";
message PointCloud {
int32 width = 1;
int32 height = 2;
message Point {
float x = 1;
float y = 2;
float z = 3;
fixed32 rgb = 4;
}
repeated Point points = 3;
google.protobuf.Timestamp timestamp = 4;
}
This is how I am preparing the data and serializing it in C#:
using Google.Protobuf;
using Tutorial;
using ZeroMQ;
PointCloud pointCloud = new PointCloud();
pointCloud.Height = Height
pointCloud.Width = Width;
pointCloud.Timestamp = Timestamp.FromDateTime(DateTime.UtcNow);
for (var index = 0; index < POINTS3D_COUNT; index++) {
PointCloud.Types.Point point = new PointCloud.Types.Point {
X = points3D[index].X,
Y = points3D[index].Y,
Z = points3D[index].Z,
Rgb = (uint)((red << 16) | (green << 8) | blue)
};
pointCloud.Points.Add(point);
}
zmqPublisher.Send(new ZFrame(pointCloud.ToByteArray()));
This is how I deserialize the data in C++:
while (receive) {
zmq::message_t msg;
int rc = zmq_socket.recv(&msg);
if (rc) {
Tutorial::PointCloud point_cloud;
point_cloud.ParseFromArray(msg.data(), msg.size());
}point_cloud.ParseFromArray(msg.data(), msg.size())
}
I am able to get the data back properly. However, the serialization and
deserialization process seems slow.
- I used *System.Diagnostics.Stopwatch *in C# and noticed that
*pointCloud.ToByteArray()* is taking 100ms approximately.
- Similarly I used *std::chrono::steady_clock::now()* in C++ and noticed
that *point_cloud.ParseFromArray(msg.data(), msg.size())* is taking 96ms
approximately.
- Just for information, the length of the byte array is roughly
3,784,000.
*I want to know how to speed up serialization and deserialization process?*
-
Thanks
Ravi
--
You received this message because you are subscribed to the Google Groups
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.