Какая оптимизация протобуфа?

Использование компилятора буфера протокола google для С++ его непонятно, что быстрее: оптимизируйте для скорости:

option optimize_for = SPEED;

или оптимизируйте для легкого выполнения:

option optimize_for = LITE_RUNTIME;

Если скорость быстрее, что делает ее быстрее? кто-нибудь имеет жесткие данные по этому вопросу?

Ответы

Ответ 1

Как я читал документация,

  • optimize для CODE_SIZE не генерирует быстрые методы доступа для всего, но полагается на медленное отражение,

  • Оптимизация для SPEED даст вам быстрый доступ

  • и оптимизация для LITE_RUNTIME также даст вам быстрый доступ, но не поддерживает полную функциональность protobuf, но только более легкое подмножество protobuf-lite. В принципе, это означает, что дескрипторы или отражение недоступны.

Итак, я думаю, LITE_RUNTIME не медленнее, чем SPEED, и вы должны выбрать в зависимости от того, какую библиотеку времени выполнения вы хотите требовать (lite или full).

Если скорость быстрее, что делает ее быстрее?

СКОРОСТЬ быстрее по сравнению с CODE_SIZE, потому что вместо использования времени выполнения используется автогенерированный код.