Kiedy (ponownie) buduję duże systemy na komputerze stacjonarnym / laptopie, mówię, makeaby użyć więcej niż jednego wątku, aby przyspieszyć kompilację:
$ make -j$[ $K * $C ]
Gdzie $Cma wskazać liczbę rdzeni (które możemy założyć, aby być liczbą z jednej cyfry) maszyna ma, natomiast $Kjest czymś różnić od 2celu 4, w zależności od mojego nastroju.
Na przykład mogę powiedzieć make -j12, że jeśli mam 4 rdzenie, wskazuję makena użycie do 12 wątków.
Moje uzasadnienie jest takie, że jeśli używam tylko $Cwątków, rdzenie będą bezczynne, podczas gdy procesy będą zajęte pobieraniem danych z dysków. Ale jeśli nie ograniczę liczby wątków (tj. make -j) Ryzykuję marnowanie czasu na przełączanie kontekstów, zabraknie pamięci lub gorzej . Załóżmy, że maszyna ma $Mgigantyczną pamięć (gdzie $Mjest rzędu 10).
Zastanawiałem się więc, czy istnieje ustalona strategia wyboru najbardziej wydajnej liczby wątków do uruchomienia.
