Które elementy komputera mają największy wpływ na czas kompilacji programu Visual Studio?

16

Które specyfikacje komputera mają największy wpływ na czas kompilacji? Dysk? Szybkośc zegara? Liczba rdzeni procesora?

Rob Allen
źródło
1
Czy to nie jest pytanie programistyczne? Czy miałby większą publiczność na StackOverflow?
Kurt W. Leucht,

Odpowiedzi:

13

Czynnikiem, który znalazłem, robi największą różnicę, nie jest czynnik fizyczny, ale programowy: Który program antywirusowy zainstalowałeś?

Niektóre produkty antywirusowe nie radzą sobie zbyt dobrze z tworzeniem oprogramowania - widzą, że wszystkie pliki aplikacji są przepisywane, podejrzewają, że działają nieprawidłowo i za każdym razem skanują ponownie.

(Widzieć /programming/1170078/is-it-usual-for-aspx-files-to-take-5-10-seconds-to-save/1170129#1170129, aby uzyskać więcej.)

Z drugiej strony, jeśli chcesz poprawić wydajność istniejącej maszyny, nic nie przebije maksymalnego wykorzystania dostępnej pamięci do szybkiej wygranej.

Bevan
źródło
Komputer w biurze korzysta z TrendMicro OfficeScan. Mój deweloper laptop w domu korzysta z AVG 8.
Rob Allen
3
„Trend Micro”. O jej. Jeśli nie możesz tego zmienić na coś innego, w ogóle pożegnaj się z jakimkolwiek występem.
Bevan
8

Oto kilka ciekawych badań przeprowadzonych przez Scotta Hanselmana na temat używania wielu procesorów dla MSBUild. Przyspieszenia są dość dramatyczne.

Edycja: Należy jednak pamiętać, że aby dobrze korzystać z programu Visual Studio, potrzebujesz dużej ilości pamięci RAM. :)

JP Alioto
źródło
+1 Dobry artykuł na ten temat. Zapomniałem o tym. Myślę, że zrobił także podcast na ten temat.
BinaryMisfit
4

Moje osobiste doświadczenie ze sporą bazą kodu C ++:

Stara maszyna

Procesor: Pentium 4 HT 3,06 GHz
Pamięć: 1 GB DDR RAM (PC 2100, więc 333 MHz)
Dysk: Dysk twardy 7200 RPM (UDMA 100, jeśli pamięć służy)
Czas kompilacji: 50 minut

Nowa maszyna:

Procesor: Core i7 720QM (8 procesorów logicznych) przy 1,6 GHz, turbo do 1,73 GHz, gdy wszystkie rdzenie są aktywne
Pamięć: 8 GB pamięci DDR3 RAM przy 1066 MHz
Dysk: 7200 obr./min dysk twardy (SATA 2)
Czas kompilacji: 4 minuty (z / MP )


Wniosek: im więcej procesorów, tym lepiej - nawet przy stosunkowo niskich częstotliwościach zegara. Dysk SSD poprawiłby czasy jeszcze bardziej, ale z obserwacji komunikatów kompilacyjnych wątpię, by poprawił go o ponad 30 sekund.

mmyers
źródło
3

O ile pamiętam głównie procesor i pamięć. Szybkie google ujawniło różne poprawki, które mogą poprawić czasy kompilacji.

Joel niedawno napisał o wpływie dysków SSD na kompilacje tutaj . Szybkość dysku zasadniczo nie poprawia drastycznie czasu kompilacji. Jednak zgodnie z tym ma efekt, jak wskazał lyngbym .

BinaryMisfit
źródło
1

W przypadku budowania programów w C ++ czynnik nr 1, zanim wszystko inne ma charakter strukturalny - jeśli kod źródłowy ma silną strukturę pionową, będzie miał druzgocący wpływ na czasy kompilacji, szczególnie kompilacje przyrostowe. Lokalnie zrestrukturyzowałem kilka części projektu, aby radykalnie ulepszyć czterordzeniowy Xeon. 18 miesięcy później i oni (ludzie, którzy są właścicielami projektu) nadal nie mogą dorównać moim czasom budowy zegarów ściennych, nawet na maszynach Core i7.

Efekt (pozytywny lub negatywny) układu oprogramowania mnoży się przez każdego członka zespołu i każdą kompilację, którą wykonują.

Sam Harwell
źródło
Czy masz link opisujący różne struktury kodu? Myślę, że wiem o czym mówisz, ale nie jestem pewien.
Rob Allen,
Mam problem ze znalezieniem moich referencji, ale ogólna idea jest taka: 1) w miarę możliwości używaj deklaracji przesyłania dalej, 2) dołączaj pliki tylko wtedy, gdy deklaracja przesyłania dalej nie będzie działać, oraz 3) upewnij się, że plik, który dołączasz, nie deklaruje więcej rzeczy, które nie są konieczne, co z kolei może sprawić, że będzie zawierać więcej plików, których w innym przypadku nie potrzebujesz do kompilacji konkretnego pliku źródłowego (czyli też utrzymuj małe nagłówki i używaj w nich deklaracji przesyłania dalej, tak jak robisz to w przypadku plików źródłowych).
Sam Harwell,
1

Xoreax IncrediBuild to rozproszony system kompilacji, który znacznie poprawił czasy kompilacji, w których pracuję. (Niestety czasy połączeń są wciąż dość długie, szczególnie kompilacje wydań wykorzystujące optymalizację całego programu i generowanie kodu czasu łącza, ale należy się tego spodziewać.)

alternatywny tekst

bk1e
źródło