使用功能上提供了许多好处,包括:
该函数中的代码可以重复使用。
这是很容易改变或更新代码中的函数(这需要做一次) ,每就地实例比。重复的代码是一个灾难。
它使你的代码更易于阅读和理解,因为你不必知道一个函数的实现,以了解它做什么。
该功能提供了类型检查。
然而,功能的一个主要缺点是,每一个函数被调用时,存在发生了一定的性能开销。这是因为CPU必须保存当前指令的被执行的(所以它知道在哪里可以返回到更高版本)以及其他的寄存器,所有的功能参数必须被创建和赋值的地址,程序必须转移到一个新的位置。写就地代码显著更快。
对于功能,是大的和/或执行复杂的任务,相较于功能需要运行的时间量的函数调用的开销通常是微不足道的。然而,对于小的,常用的功能,需要使函数调用的时间往往大大超过实际执行功能的代码所需要的时间更多。这可能会导致重大的性能损失。
C + +中提供了一种功能的优点结合起来的代码的速度写在原地:内联函数。 inline关键字用来要求编译器把你的函数为内联函数。当编译器编译你的代码,所有的内联函数扩展就地 - 也就是说,函数调用被替换的函数本身,从而消除了函数调用的开销的内容的副本!不足之处是由于内联函数是在地方,每个函数调用扩展,这可以让你的编译代码颇有几分较大,特别是如果内联函数是长和/或有多次调用内联函数。
该程序调用函数MIN()两次,招致函数调用的开销处罚两次。因为MIN()就是这样一个简短的函数,它是内联的最佳人选:
现在,当程序编译的main(),它会创建机器代码,如果main()中曾这样写的:
该函数中的代码可以重复使用。
这是很容易改变或更新代码中的函数(这需要做一次) ,每就地实例比。重复的代码是一个灾难。
它使你的代码更易于阅读和理解,因为你不必知道一个函数的实现,以了解它做什么。
该功能提供了类型检查。
然而,功能的一个主要缺点是,每一个函数被调用时,存在发生了一定的性能开销。这是因为CPU必须保存当前指令的被执行的(所以它知道在哪里可以返回到更高版本)以及其他的寄存器,所有的功能参数必须被创建和赋值的地址,程序必须转移到一个新的位置。写就地代码显著更快。
对于功能,是大的和/或执行复杂的任务,相较于功能需要运行的时间量的函数调用的开销通常是微不足道的。然而,对于小的,常用的功能,需要使函数调用的时间往往大大超过实际执行功能的代码所需要的时间更多。这可能会导致重大的性能损失。
C + +中提供了一种功能的优点结合起来的代码的速度写在原地:内联函数。 inline关键字用来要求编译器把你的函数为内联函数。当编译器编译你的代码,所有的内联函数扩展就地 - 也就是说,函数调用被替换的函数本身,从而消除了函数调用的开销的内容的副本!不足之处是由于内联函数是在地方,每个函数调用扩展,这可以让你的编译代码颇有几分较大,特别是如果内联函数是长和/或有多次调用内联函数。
请考虑下面的代码片段:
1
2
3
4
5
6
7
8
9
10
11
12
|
int
min(
int
nX,
int
nY)
{
return
nX > nY ? nY : nX;
}
int
main()
{
using
namespace
std;
cout << min(5, 6) << endl;
cout << min(3, 2) << endl;
return
0;
}
|
1
2
3
4
|
inline
int
min(
int
nX,
int
nY)
{
return
nX > nY ? nY : nX;
}
|