2010-12-14 18 views
13

Utilizzando il protocollo buffer di compilatore di Google per C++ il suo non è chiaro che è più veloce: l'ottimizzazione per la velocità:Quale ottimizzazione di protobuf?

option optimize_for = SPEED; 

o ottimizzare per tempo di esecuzione di luce:

option optimize_for = LITE_RUNTIME; 

se la velocità è più veloce, ciò che lo rende più veloce? qualcuno ha dati difficili sull'argomento?

risposta

15

Il modo in cui ho letto il documentation,

  • ottimizzare per CODE_SIZE non genera metodi di accesso veloci per tutto, ma si basa sulla riflessione lenta,

  • massima velocità vi darà le funzioni di accesso veloce

  • e l'ottimizzazione per LITE_RUNTIME forniranno anche accessor veloci, ma non supportano la piena funzionalità di protobuf, ma solo il sottoinsieme più leggero protobuf-lite. Fondamentalmente, questo significa che i descrittori o la riflessione non sono disponibili.

Quindi credo che, LITE_RUNTIME non è più lenta rispetto alla velocità, e si dovrebbe scegliere a seconda di quale libreria di runtime si desidera richiedere (lite o completa).

se la velocità è più veloce, cosa lo rende più veloce?

SPEED è più veloce rispetto a CODE_SIZE, perché utilizza codice generato automaticamente anziché riflessione di runtime.

+0

L'ho capito anche io ... tuttavia prove sperimentali hanno dimostrato che la VELOCITÀ era leggermente più veloce ...? qualcuno può confermare? –