protocol protobuffers protobuf notes google buffers c++ comparison protocol-buffers

c++ - protobuffers - ¿Cuál es la forma más sencilla de comparar dos objetos google:: protobuf:: Message entre sí?



protobuf vs json (3)

Quiero comparar dos objetos arbitrarios de google::protobuf::Message .

Supongo que los objetos son iguales cuando

  • sus descripciones contienen campos con números de campo iguales y los tipos de campo correspondientes.
  • sus reflexiones tienen el mismo conjunto de campos (y el mismo número de campos repetidos) e iguales valores de campo correspondientes.

Sé que puedo escribir esa función de comparación por mi cuenta, pero es posible que ya exista alguna solución simple o predefinida.

Además, es posible que me esté perdiendo algún problema principal sobre la incomparabilidad de tales objetos; me gustaría saber si es así.



Mi experiencia me ha demostrado que la comparación depende de la estructura del mensaje. Si tiene una estructura de mensaje similar a un árbol profundo, no la compare si tiene que terminar rápidamente.

Por ejemplo, tengo una estructura profunda de 7 nodos (no pregunte por qué) pero sería una idea de cama para que comparara campo por campo.

Una marca que puedes usar es obtener los tamaños de los campos repetidos y compararlos. Pero usted depende de la estructura y el tamaño del mensaje.