2016-04-17 13 views
5

Czy jawnie zadeklarowałbyś klasy final i upewniając się, że rzeczy są opisywane jako takie, zwiększając lub zmniejszając czasy kompilacji? Rozumiem, w jaki sposób wpływa on na środowisko wykonawcze, zmniejszając wysyłkę dynamiczną.Swift Compile Times - Czy słowo kluczowe "final" powinno zwiększyć lub zmniejszyć czas kompilacji?

Anegdotycznie próbowałem tego na średniej wielkości projekcie (i włączyłem domyślne ustawienia Xcode, aby wydrukować czasy kompilacji), a czas kompilacji zaskakująco wzrósł (o 8 sekund). Czy nie powinno być łatwiej zrozumieć, jak cały kod pasuje do wskazówek, które eliminują podklasy?

+0

Pamiętaj, dlaczego 'final' powinien wydłużyć czas kompilacji. Z 'final', mniej rzeczy jest prawnie niż bez niego, więc kompilator musi sprawdzić, że kod" ostateczny "sprawia, że ​​jest nielegalny. 'private' może sprawić, że autouzupełnianie działa szybciej, ale nie powinno mieć dużego wpływu na czas kompilacji. – BallpointBen

+2

Nie rozumiem, dlaczego został oznaczony jako duplikat. Wydaje się, że pytanie, o którym mowa, nie jest świadome korzyści z wydajności środowiska wykonawczego, podczas gdy ja interesuje mnie wydajność kompilatora. Przydatny bit, który mogę wyciągnąć z połączonej odpowiedzi, brzmi: "[t] jego pozwala kompilatorowi bezpiecznie przesuwać dynamiczny komunikat o kierunku wysyłki", ale to nie oznacza dokładnie zwiększenia lub zmniejszenia czasu kompilacji. – edelaney05

+2

Zgadzam się, to nie wygląda na duplikat. Należy ponownie otworzyć. – BallpointBen

Odpowiedz

-4

Słowo kluczowe final, jeśli moje zrozumienie jest poprawne, uniemożliwia modyfikację zmiennej, czyniąc ją stałą. Powinno to w efekcie zmniejszyć liczbę możliwych optymalizacji, które kompilator może wykonać podczas kompilacji, co powinno skrócić czas kompilacji programu.

+2

Nie, 'final' zapobiega podklasom klas. – BallpointBen