【发布时间】:2011-09-27 02:27:00
【问题描述】:
对于一个作业,我们应该编写两种处理输出的方法。一种输出字符串,一种输出整数。
基本上我们有两个方法调用另一个方法:
void TheClass::displayString(string str){ cout << str; }
void TheClass::displayNumber(int n) { cout << n; }
内联会通过不调用另一个函数来节省一些开销来加快速度或 它会在命名空间等方面为 cout 创建更多内容吗?
inline void TheClass::displayString(string str) { cout << str; }
inline void TheClass::displayNumber(int n) { cout << n; }
【问题讨论】:
-
您的计算机可以围绕
std::cout << b运行几乎任何类型的b(例外是具有(故意)复杂输出机制的用户定义类)。你不必担心这个。 -
添加到 Chris 的评论中,许多专业人士不再担心这种级别的性能。更重要的是代码结构良好且易于理解。你可能会担心它会发现在运行代码一千年中,总共损失了一秒钟!更好的方法是在有明显好处的地方担心性能,然后分析代码并查看真正的瓶颈在哪里!
-
inline关键字不一定内联函数。内联函数可能会产生不利影响,并减慢速度。内联生成更多代码,这意味着更低的局部性,并且新的代码页必须以更高的频率进入。不管怎样,通过值传递std::strings 可能比通过内联函数调用节省的成本要高得多。不要优化,直到您的分析器告诉您要优化什么。并且不要运行分析器,除非存在可以想象的性能问题。
标签: c++ performance methods inline overhead