Используй google.golang.org/protobuf (v2) вместо старого github.com/golang/protobuf. Для hot path — переиспользуй proto.MarshalOptions с буфером. proto.Size() для pre-allocation. Для больших сообщений — стримминг вместо одного большого Marshal. vtprotobuf от PlanetScale генерирует оптимизированный код, 3-5x быстрее.