Übergeben von Argumenten an Funktionen mit const-Parametern: Geht das schneller?

Betrachten Sie zum Beispiel:

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

gegen

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

Ist der zweite Ansatz im Allgemeinen schneller?

Funktionsparameter in C werden kopiert und an die Funktion gesendet, sodass Änderungen innerhalb der Funktion die ursprünglichen Werte nicht beeinflussen. Meine Argumentation ist die in der zweitensum oben weiß der Compiler sicher, dassa undb werden in der Funktion nicht geändert, sodass nur die ursprünglichen Werte übergeben werden können, ohne sie zuvor zu kopieren. Deshalb denke ich die zweitesum ist schneller als der erste. Aber ich weiß es nicht wirklich. In dem besonders einfachen Beispiel vonsum oben sollten die Unterschiede, falls vorhanden, minimal sein.

Bearbeiten: Dassum Beispiel ist nur, um meinen Punkt zu veranschaulichen. Ich erwarte nicht, dass es in diesem Beispiel große Unterschiede geben sollte. Aber ich frage mich, ob in komplizierteren Situationen dieconst Modifikator innerhalb eines Funktionsparameters kann vom Compiler ausgenutzt werden, um die Funktion zu beschleunigen. Ich bezweifle, dass der Compiler immer feststellen kann, ob ein Parameter innerhalb einer Funktion geändert wird (daher meine zweite Frage unten). daher würde ich das erwarten, wenn es eine findetconst Modifikator, es macht etwas anderes als wenn es keine gibtconst Modifikator.

Frage: Im Allgemeinen ist eine Funktion schneller, wenn ihre Argumente vorliegenconst, als wenn sie nicht sind?

Frage 2: Kann ein C-Compiler (theoretisch) im Allgemeinen immer feststellen, ob ein Funktionsparameter innerhalb der Funktion geändert wird?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage