Pasando argumentos a funciones con parámetros const: ¿es más rápido?

Considere, por ejemplo:

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

contra

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

¿Es el segundo enfoque en general más rápido?

Los parámetros de la función en C se copian y envían a la función, de modo que los cambios dentro de la función no afecten los valores originales. Mi razonamiento es que en el segundo.sum Arriba, el compilador sabe con seguridad quea yb no se modifican dentro de la función, por lo que puede pasar los valores originales sin copiarlos primero. Por eso creo que el segundo.sum Es más rápido que el primero. Pero realmente no lo sé. En el ejemplo simple particular desum arriba, las diferencias, si las hay, deben ser mínimas.

Editar: lossum El ejemplo es solo para ilustrar mi punto. No espero que en este ejemplo particular haya grandes diferencias. Pero me pregunto si en situaciones más complicadas laconst El modificador dentro de un parámetro de función puede ser explotado por el compilador para hacer que la función sea más rápida. Dudo que el compilador siempre pueda determinar si un parámetro se cambia dentro de una función (de ahí mi segunda pregunta a continuación); por lo tanto yo esperaría que cuando encuentre unaconst Modificador, hace algo diferente que cuando no hay.const modificador

Pregunta: En general, una función será más rápida cuando sus argumentos sonconst, que cuando no lo son?

Pregunta 2: En general, ¿puede un compilador de C (teóricamente) determinar siempre si un parámetro de función se cambia dentro de la función?

Respuestas a la pregunta(4)

Su respuesta a la pregunta