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.

Reply via email to