Add a version of SerializeToStringDeterministic that serializes to a...
Add a version of SerializeToStringDeterministic that serializes to a pre-allocated buffer. In the common case, this avoids a double write into the string and is in some cases about 30% faster on large protobufs. Benchmark: Run on *** (72 X 2993 MHz CPUs); 2019-02-01T17:30:47.860707104-08:00 CPU: Intel Skylake Xeon with HyperThreading (36 cores) dL1:32KB dL2:1024KB dL3:24MB Benchmark Time(ns) CPU(ns) Iterations -------------------------------------------------------------------------- BM_ProtoSerializationToString/1 99.1 99.1 7063926 BM_ProtoSerializationToString/8 450 450 1557551 BM_ProtoSerializationToString/64 3154 3154 222251 BM_ProtoSerializationToString/512 24947 24949 28043 BM_ProtoSerializationToString/4k 224626 224626 2995 BM_ProtoSerializationToString/10k 563273 563262 1000 BM_ProtoSerializationToBuffer/1 77.7 77.8 9015139 BM_ProtoSerializationToBuffer/8 351 351 1996330 BM_ProtoSerializationToBuffer/64 2511 2511 278283 BM_ProtoSerializationToBuffer/512 19846 19849 35234 BM_ProtoSerializationToBuffer/4k 184208 184262 3502 BM_ProtoSerializationToBuffer/10k 427867 427938 1622 PiperOrigin-RevId: 232374729
Loading
Please sign in to comment