2010-12-14 1 views
13

Использование протокола буфера компилятор Google для C++ его не ясно, что быстрее: оптимизировать скорость:Какая оптимизация протобуфа?

option optimize_for = SPEED; 

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

option optimize_for = LITE_RUNTIME; 

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

ответ

15

Как я прочитал documentation,

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

  • оптимизируют для SPEED даст вам быстрое Accessors

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

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

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

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

+0

Я тоже это понял ... однако экспериментальные данные показали, что СКОРОСТЬ была немного быстрее ...? может ли кто-нибудь еще подтвердить? –

 Смежные вопросы

  • Нет связанных вопросов^_^