Czasami kompilatory wywołują funkcje wbudowane. Oznacza to, że przenoszą kod wywoływanej funkcji do funkcji wywołującej. To sprawia, że rzeczy są nieco szybsze, ponieważ nie ma potrzeby pchania i pop-upowania na stosie wywołań i poza nim.
Więc moje pytanie brzmi: dlaczego kompilatory nie uwzględniają wszystkiego? Zakładam, że dzięki temu plik wykonywalny byłby znacznie szybszy.
Jedynym powodem, dla którego mogę wymyślić, jest znacznie większy plik wykonywalny, ale czy to naprawdę ma znaczenie w dzisiejszych czasach z setkami GB pamięci? Czy poprawa wydajności nie jest tego warta?
Czy jest jakiś inny powód, dla którego kompilatory nie tylko wstawiają wszystkich wywołań funkcji?
Isn't the improved performance worth it?
W przypadku metody, która uruchomi pętlę 100 razy i zniszczy niektóre poważne liczby, narzut związany z przenoszeniem 2 lub 3 argumentów do rejestrów procesora jest niczym.