Przekazywanie argumentów do funkcji o parametrach const: czy jest szybsze?

Rozważmy na przykład:

int sum(int a, int b)
{
    return a + b;
}

vs.

int sum(const int a, const int b)
{
    return a + b;
}

Czy drugie podejście jest ogólnie szybsze?

Parametry funkcji w C są kopiowane i wysyłane do funkcji, dzięki czemu zmiany wewnątrz funkcji nie wpływają na oryginalne wartości. Moje rozumowanie jest takie w drugimsum powyżej kompilator wie na pewnoa ib nie są modyfikowane wewnątrz funkcji, więc mogą po prostu przekazać oryginalne wartości bez ich uprzedniego kopiowania. Dlatego myślę, że drugisum jest szybszy niż pierwszy. Ale tak naprawdę nie wiem. W szczególnym prostym przykładziesum powyżej, ewentualne różnice powinny być minimalne.

Edytować: Thesum przykładem jest tylko zilustrowanie mojego punktu. Nie oczekuję, że w tym konkretnym przykładzie powinny istnieć duże różnice. Ale zastanawiam się, czy w bardziej skomplikowanych sytuacjachconst modyfikator wewnątrz parametru funkcji może być wykorzystany przez kompilator, aby przyspieszyć działanie. Wątpię, aby kompilator zawsze mógł określić, czy parametr został zmieniony wewnątrz funkcji (stąd moje drugie pytanie poniżej); stąd spodziewam się tego, gdy znajdzieconst modyfikator, robi coś innego niż gdy nie maconst modyfikator.

Pytanie: Ogólnie rzecz biorąc, funkcja będzie szybsza, gdy jej argumenty sąconst, niż kiedy ich nie ma?

Pytanie 2: Ogólnie, czy kompilator C (teoretycznie) zawsze może określić, czy parametr funkcji jest zmieniany wewnątrz funkcji?

questionAnswers(4)

yourAnswerToTheQuestion