2016-04-17 6 views
5

Dichiareresti esplicitamente le classi final e assicurandoti che il materiale private sia annotato come tale aumento o diminuzione dei tempi di compilazione? Capisco come influisce sul runtime riducendo la spedizione dinamica.Swift Compile Times - La parola chiave 'final` dovrebbe aumentare o diminuire la compilazione?

Aneddoticamente, l'ho provato su un progetto di medie dimensioni (e ho attivato le impostazioni predefinite Xcode per stampare i tempi di compilazione) e il tempo di compilazione è aumentato in modo sorprendente (di 8 secondi). Non dovrebbe essere più facile capire come tutto il codice si combini con i suggerimenti che eliminano le sottoclassi?

+0

Nota perché "final" dovrebbe aumentare il tempo di compilazione. Con 'final', meno cose sono legali che senza di esso, e quindi il compilatore deve controllare che il codice che' final' rende illegale non sia presente. 'private' può rendere il completamento automatico più veloce, ma non dovrebbe avere un grande impatto sul tempo di compilazione. – BallpointBen

+2

Non capisco perché questo è stato contrassegnato come duplicato. La domanda di riferimento sembra essere inconsapevole dei benefici delle prestazioni di runtime, mentre sono interessato alle prestazioni del compilatore. Il bit utile che posso ricavare dalla risposta collegata è "[t] che consente al compilatore di escludere in modo sicuro l'indirizzamento dinamico delle spedizioni", ma ciò non indica esattamente un aumento o una diminuzione del tempo di compilazione. – edelaney05

+2

Sono d'accordo, questo non sembra un duplicato. Dovrebbe essere riaperto – BallpointBen

risposta

-4

La parola chiave final, se la mia comprensione è corretta, non consente la modifica della variabile, rendendola una costante. Ciò dovrebbe, in effetti, ridurre il numero di possibili ottimizzazioni che il compilatore può eseguire in fase di compilazione, il che dovrebbe ridurre il tempo necessario per compilare il programma.

+2

No, 'final' impedisce alle classi di essere sottoclassate. – BallpointBen