Od momentu rozpoczęcia pracy w nowej firmie zauważyłem, że używają one plików cpp dla większości naszego rozwiązania i zastanawiałem się, czy ktoś jest w stanie podać mi ostateczny powód, dlaczego i jak przyspieszają proces kompilacji. ? Wydaje mi się, że edycja jednego pliku cpp w plikach jedności wymusi ponowną kompilację wszystkich plików.Korzyści/wady budowania jedności?
Odpowiedz
Bardzo podobne odpowiedzi pytanie i dobre tutaj: #include all .cpp files into a single compilation unit?
Podsumowanie Wydaje się, że mniej I/O koszt jest główną zaletą.
Zobacz także The Magic Of Unity Builds jako powiązane również w powyższym pytaniu.
Doskonała odpowiedź, bardzo dziękuję za pomoc, po przeczytaniu tych linków jeszcze im nie mądrzejszy, jeśli edytowanie plików w jednostce cpp wymusza kompletną rekompilację całego źródła, jakieś pomysły na ten temat? – Stowelly
Tak, to by było. To, czy to źle, zależy od tego, jak często trzeba już wykonać pełną odbudowę. –
Jeśli zmieni się jeden plik, przyzwoity system kompilacji zauważy zmienioną zależność i przekompiluje partię. Być może uda Ci się złagodzić niektóre z tego czasu dzięki pamięci podręcznej kompilatora, takiej jak doskonały ccache - patrz http://ccache.samba.org/ – akent
Lee Winder napisali swoje doświadczenia z Unity wybudowany - The Evils of Unity Builds
Jego konkluzja brzmi:
Jedność buduje. Nie lubię ich.
Bardzo przydatny artykuł. Ostatnio zauważyłem, że wprowadzenie kilku zmian w plikach w wielu projektach w ramach rozwiązania może zająć nawet pół godziny (nawet w przypadku systemu incredibuild), ale rozwiązanie do czyszczenia i budowanie od zera trwa około 5 minut, więc z pewnością jest wiele ważnych wskazuje tam! – Stowelly
Link można teraz znaleźć [tutaj] (http://engineering-game-dev.com/2009/12/15/the-evils-of-unity-builds/). – imallett
@imallett Ten link również jest uszkodzony. – glauxosdever
Dzieje się tak, ponieważ oszczędza on nadmiar pracy. Nadmiarowe analizowanie i kompilacja zależności. Łączenie jest również o wiele bardziej skomplikowane - albo eksportujesz wszystko do jednego obiektu (albo kilku) albo oddzielny nadmiarowy eksport do większości plików obiektów celu. Mniej obiektów powoduje mniej wejść/wyjść i skrócone czasy połączeń. W zależności od konfiguracji włączenie może być problemem - w używanym przeze mnie systemie "budowa jedności", budowanie to ostatecznie procesor i/lub pamięć.
- 1. Jak ustawić ścieżkę ścieżki budowania jedności z wiersza poleceń
- 2. Korzystanie LogManager.GetLogger z Jedności
- 3. Konstruktor jedności z domyślnymi parametrami
- 4. Integracja jedności z Eclipse - komunikacja?
- 5. Zmiana rozmiaru rozwijanym w jedności
- 6. Przechwytywanie jedności C# według atrybutu
- 7. Wystąpienie rejestru jedności i postanowienie
- 8. Zależność wtrysku jedności - warunkowe rozwiązywanie
- 9. Rozwiązywanie wystąpień z delegatami w jedności
- 10. Jak wstrzykiwać właściwość zależność używając MKOl Jedności
- 11. Warunkowo rozwiązać nazwie wdrożenie w Jedności
- 12. Problemy z przenoszeniem shadertoy'a GLSL do jedności
- 13. Jak narysować obrazy na terenie w jedności
- 14. Poprawa procesu budowania
- 15. Skrypt budowania poczty NetBeans
- 16. Zasoby dotyczące budowania RDBMS
- 17. Jak używać C struct z tablicy 2D w C# Jedności
- 18. wstrzykiwanie atrybutu uwierzytelniania przy użyciu Jedności 2 i MVC 3
- 19. jak zatrzymać zdarzenie przeciągania w OnBeginDrag() w jedności 4.6
- 20. Biblioteka jedności i WCF: Gdzie załadować jedność w bibliotece wcf?
- 21. Dostęp do bazy danych sql przy użyciu C# na jedności?
- 22. Facebook Śródmiąższowe Ad crash MoPub Plugin na Jedności
- 23. Rejestracja klasa abstrakcyjna i rozwiązać pochodzi z klasy Jedności
- 24. Błąd Libpython podczas budowania YouCompleteMe
- 25. Błąd "Nieobsługiwany element budowania Netbeans"
- 26. Jak poprawić wydajność budowania zespołu?
- 27. Kiedy użyć narzędzia do budowania?
- 28. Oznaczanie Cythona jako zależności budowania?
- 29. Delphi XE2 - budowania aplikacji 64bit
- 30. Jak działa proces budowania Androida?
Pamiętaj, że kompilacja jedności zmienia semantykę, ponieważ jest wiele rzeczy, które zależą od ograniczeń jednostki tłumaczeniowej. –