2016-02-27 21 views
6

L'idioma pimpl (anche: firewall del compilatore) viene utilizzato per abbreviare i tempi di compilazione, a scapito della leggibilità e di alcune prestazioni di runtime. Al momento un progetto richiede troppo tempo per compilare, come misurare i migliori candidati Pimpl?Come misurare i candidati Pimpl?

Ho la mia esperienza nell'utilizzo di Pimpl, accorciare un progetto il suo tempo di compilazione da due ore a dieci minuti, ma l'ho fatto solo seguendo il mio istinto: ho ragionato i file di intestazione di classe che includono (1) un sacco di codice sorgente (2) classi complesse/modello, sono i migliori candidati per utilizzare l'idioma brufolo su.

Esiste uno strumento che indichi quali classi sono valide per i candidati Pimpl?

+1

OT: ero sempre sotto l'impressione che il motivo principale per utilizzare il Pimpl è stato quello di non-gonfiare l'interfaccia pubblica dai dettagli di implementazione. Ad ogni modo, un'ottima domanda – sjaustirni

+0

hai provato a utilizzare le intestazioni precompilate per vedere quale era il guadagno di prestazioni in fase di compilazione? – Christophe

+0

@Christophe: sì, ho usato le intestazioni precompilate. Siding la mia domanda iniziale sarebbe: "Come misurare i candidati all'intestazione precompilati?" – richelbilderbeek

risposta

0

Questo è vero che Pimpl è utile per la compilazione incrementale.

Ma la ragione principale per utilizzare Pimpl è preservare la compatibilità ABI. Questa era la regola nella mia passata compagnia per quasi tutte le public class dell'API.

Un altro vantaggio è che è anche possibile distribuire la libreria come pacchetto contenente un'intestazione che non espone i dettagli dell'implementazione.

Per questo dirò: utilizzare Pimpl ovunque sia possibile.

un ottimo articolo dei dettagli di implementazione Qt Pimpl e dei benefici: https://wiki.qt.io/D-Pointer

Il problema fase di compilazione deve essere affrontato con:

  • utilizzando intestazione precompilata
  • dividendo le grandi progetti in piccoli quelli per codice touch frequenza. Parti che non cambiano spesso possono essere compilate in una libreria e pubblicate nel repository locale che altri progetti fanno riferimento per versione.
  • ...
+0

Grazie saad per illuminarmi su questi punti. Tuttavia, la mia domanda è, come misurare dove usare un pimpl darà maggior incremento in fase di compilazione. La risposta più vicina a questa risposta è il tuo suggerimento di "dividere i tuoi grandi progetti in piccoli con la frequenza del tocco del codice". La mia domanda è: "Come lo misuri?" – richelbilderbeek