Czy wydajność będzie lepsza (szybsza), jeśli ręcznie skompiluję źródło komponentu oprogramowania dla rzeczywistej maszyny, na której będzie on używany, w porównaniu z tym, czy źródło zostało skompilowane na innej platformie, być może dla wielu różnych architektur? Mam kilka dobrych wyników kompilacji źródła, które pobrałem i zastanawiam się, czy było to spowodowane kompilacją zamiast pobierania skompilowanego pliku binarnego, co często ma miejsce w przypadku aktualizacji oprogramowania.
binary
compilation
Niklas
źródło
źródło
Odpowiedzi:
W wielu (jeśli nie w większości) przypadkach tak. Jest tak, ponieważ kompilator może generować natywny kod zoptymalizowany dla tego konkretnego procesora i środowiska. Kod jest bardziej „ukierunkowany”.
źródło
Kompilacja ze źródeł daje tę zaletę, że ustawia flagi kompilatora tak, jak chcesz dla określonej platformy. Pobranie pakietu, który został skompilowany z tymi samymi dokładnymi ustawieniami co twoje, nie zapewniłoby żadnej różnicy, ale zmiana ustawień z domyślnych może dać ci duże ulepszenia.
Na przykład, jeśli pliki binarne oferowane do pobrania zostały skompilowane do debugowania (celowo lub przez pomyłkę), włączenie bardziej agresywnej optymalizacji poprawi wydajność w prawie wszystkich sytuacjach. Z drugiej strony, jeśli skompilowany kod zostanie zoptymalizowany do maksimum, nie zobaczysz żadnej różnicy.
źródło
To naprawdę zależy od dwóch użytych kompilatorów i flag kompilatora. Zazwyczaj ustawienia kompilatora i flagi na twoim komputerze lokalnym są bardziej odpowiednie dla twojego komputera, jeśli masz poprawnie skonfigurowane.
Ale jeśli, na przykład, wstępnie skompilowany plik binarny był zbudowany z dużo lepiej optymalizującego kompilatora (lub testu porównawczego specjalnie zaprojektowanego z flagami dostrojonymi dla tego konkretnego fragmentu kodu i na szczęście odpowiedniego dla twojego systemu) w porównaniu do kompilatora na twój system, wtedy możliwe jest, że cokolwiek kompilator jest w twoim systemie, może faktycznie spowodować gorszą wydajność.
źródło