Hi All, I ran some performance tests to compare the performance for serializing-persisting-retrieving-desirializing of my POJOs and was really surprised to see that java-serialization was performing better than protobuf-serialization. Iam enclosing my proto file based on which Iam generating my proto buffer messages.
----------- protofile--------------------------- option java_package = "com.equifax.ic.eid.iq.persist.generated"; option java_outer_classname = "AllQuestionPackImplProtos"; option optimize_for = SPEED; message AllQuestionPacksImpl{ optional string transid = 1; repeated QuestionPack realQuestionPacks = 2; repeated QuestionPack simulatedQuestionPacks = 3; } message QuestionPack{ optional string transkey = 1; optional bool simulated = 2; optional GeneratorNameEnum generatorNameType = 3; optional PersistableQuestion persistableQuestion = 4; repeated PersistableQuestion options = 5; optional PersistableHeader persistableHeader = 6; enum GeneratorNameEnum { GENERATOR_CONDITIONAL_CANADA_AUTO = 0; GENERATOR_CONDITIONAL_CANADA_GAS_CARD = 1; GENERATOR_CONDITIONAL_CANADA_PERSONAL_LINE_OF_CREDIT = 2; GENERATOR_CONDITIONAL_CANADA_PERSONAL_LOAN = 3; GENERATOR_CONDITIONAL_CANADA_STUDENT_LOAN = 4; GENERATOR_FICTIONAL_CANADA_AUTO = 5; GENERATOR_FICTIONAL_CANADA_GAS_CARD = 6; GENERATOR_FICTIONAL_CANADA_PERSONAL_LINE_OF_CREDIT = 7; ... ... } message PersistableHeader { optional TextParametrization text = 1; } message TextParametrization{ optional string asString = 1; optional string fixedText = 2; repeated Parameter parameter =3; optional InteractiveQueryResourceEnum resourceId = 4; message Parameter{ optional string value = 1; } enum InteractiveQueryResourceEnum{ MONTH_1 = 0; MONTH_2 = 1; MONTH_3 = 2; MONTH_4 = 3; MONTH_5 = 4; MONTH_6 = 5; MONTH_7 = 6; MONTH_8 = 7; ... .. } } message PersistableQuestion{ optional bool real = 1; repeated PersistableChoice coices = 2; optional QuestionType questionType = 3; optional PersistableHeader persistableHeader = 4; optional TextParametrization text = 5; message PersistableChoice{ optional bool correct = 1; optional int32 sortOrder = 2; optional string simpleText = 3; optional TextParametrization resourceTextValue = 4; } enum QuestionType{ US_MORTGAGE_PROVIDER_REAL = 0; US_MORTGAGE_PROVIDER_FICTIONAL = 1; US_MORTGAGE_PAYMENT_REAL = 2; US_MORTGAGE_PAYMENT_FICTIONAL = 3; US_AUTO_PROVIDER_REAL = 4; US_AUTO_PROVIDER_FICTIONAL = 5; US_AUTO_PAYMENT_REAL = 6; ... ... } } } ------------protofile----------------------- To reduce the verbosity I have not included all the elements of my Enums. But as you can see I have large enums. I have included the option 'option optimize_for = SPEED;' to optimize the proto buffer for speed, but in vain. The steps I performed are : 1) Compiled the proto fileagainst the protobuf binary to generate the source. 2) Built my proto message Objects based on the source and the POJO. 3)Serialized the proto message objects 4) Persisted proto message objects to the the Db. 5) Retrieved the blob, desirialized to the proto message object. 6) Built the pojo back from the proto message object. Steps 2 + 3 +4 are found to be more performance expensive than if I use java serialization to do the same, same for the retrieval process. Is there anything which Iam missing? How do I optimize the proto buffer to achieve performance. Any insights/ help on this is highly appreciated. Thanks in advance. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to protobuf@googlegroups.com To unsubscribe from this group, send email to protobuf+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/protobuf?hl=en -~----------~----~----~----~------~----~------~--~---