Невозможно знать заранее, потому что protobuf упаковывает структуры, которые ему даны, в наименьшее возможное число байтов - например, он не будет использовать четыре байта для int x = 1;
- поэтому библиотеке придется пройти весь граф дознать размер вывода.
Я полагаю, что вы могли бы это выяснить, выполнив операцию сериализации для протобуф-совместимого потока вашей собственной конструкции, который просто считает байты, которые ему даны.Это может быть дорогостоящим, но не более дорогостоящим, чем это может быть сделано для библиотеки.