Какой протокол оптимизации? - PullRequest
15 голосов
/ 14 декабря 2010

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

option optimize_for = SPEED;

или оптимизировать для легкой работы:

option optimize_for = LITE_RUNTIME;

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

1 Ответ

18 голосов
/ 14 декабря 2010

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

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

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

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

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

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

SPEED быстрее по сравнению с CODE_SIZE, потому что он использует автоматически сгенерированный код вместо отражения во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...