相关疑难解决方法(0)

使用const参数将参数传递给函数:它更快吗?

例如,考虑一下:

int sum(int a, int b)
{
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

int sum(const int a, const int b)
{
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

第二种方法通常更快吗?

C中的函数参数被复制并发送到函数,因此函数内部的更改不会影响原始值.我的理由是,在sum上面的第二个中,编译器确实知道a并且b没有在函数内部进行修改,所以它只能传递原始值而不先复制它们.这就是为什么我认为第二个sum比第一个更快.但我真的不知道.在sum上面特别简单的例子中,差异(如果有的话)应该是最小的.

编辑:这个sum例子只是为了说明我的观点.我不希望在这个特定的例子中应该有很大的差异.但我想知道在更复杂的情况下const,编译器是否可以利用函数参数中的修饰符来使函数更快.我怀疑编译器总能确定一个参数是否在一个函数内被改变(因此我的第二个问题在下面); 因此我希望当它找到一个const修饰符时,它会做出与没有const修饰符时不同的东西.

问题:一般来说,一个函数在它的参数时会const比它们不是时更快?

问题2:通常,C编译器(理论上)是否总能确定函数内是否更改了函数参数?

c const function-parameter

21
推荐指数
2
解决办法
2万
查看次数

函数参数中的const'ing原型是否会显着提升性能?

一位朋友告诉我,这样做效率更高

int addNumbers(const int number1, const int number2);
Run Code Online (Sandbox Code Playgroud)

int addNumbers(int number1, int number2);
Run Code Online (Sandbox Code Playgroud)

当然假设number1并且number2不会分配新值.这是否会带来显着的性能提升?我应该知道其他任何副作用吗?

c++ performance const

7
推荐指数
2
解决办法
2230
查看次数

我应该声明一个永远不会更改为const变量的参数吗?

可能重复:
函数参数使用'const'

例如,

void Func(int para);
Run Code Online (Sandbox Code Playgroud)

如果我知道我不想在Func(...)中更改para的值,我是否应该将para声明为“ const int”以保证这一点?即

void Func(const int para);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我认为

void Func(const int &para);
Run Code Online (Sandbox Code Playgroud)

有时不是合适的替代方法,因为const int&通常是由基础指针实现的,因此它基本上等效于

void Func(const int *p_para);
Run Code Online (Sandbox Code Playgroud)

《 C ++编码标准:101条规则》一书第31页说:“ void Func(const int para);” 不好,因为它会“混淆”头文件的阅读器。我不确定...

经过深思熟虑,我认为一个好的解决方案是将其声明为“ void Func(int para);”。并在实现它时使用“ void Func(const int para){...}”。我在“ void Func(const int para);”中发现“ const”一词。将被编译器静默删除...

c++

2
推荐指数
1
解决办法
331
查看次数

标签 统计

c++ ×2

const ×2

c ×1

function-parameter ×1

performance ×1