C++ 中的内联模式

Inline patterns in C++

在 c++ 中使用内联代码更有效的方法是什么。

我应该用它来支付运营商附加费吗?

inline const Composant & Composant::operator=(const Composant &c)
{
    if (this != &c)
{
    free(_description);
    _description = strdup(c.getDescription());
}

为了性能最好...不想用太多

谢谢

我忽略 "style" 作为 inlining/not 内联代码的原因。这在现实中当然是很重要的一部分。

您的 operator= 示例非常好,我会内联。它只添加了一点代码:

比较 thisc 的地址、分支、对 free 的调用和对 strdup 的调用(并存储 return 价值)。

但是,如果您的 operator= 变为 10-15 行,对 freedelete 等的调用更多,那么制作非内联也许是个好主意。

与很多事情一样,它是一种判断(或者给它起一个花哨的名字 "engineering decision",但大多数时候这些只是 "I know this will work OK"),并且真正知道哪个是更好的是,您需要测量和分析您的代码,以了解它在哪里花费时间和 "how do I make that less"。

最重要的函数是那些在循环内部使用的函数,尤其是那些具有大量迭代的函数。大多数程序都有一个或六个这样的循环 "where most of the time is spent"。优化其他代码是毫无意义的,因为它可能在整个程序执行中执行十几次,而主循环执行一百万次。使 "a dozen times" 代码 运行 每次调用快 12 个时钟周期并不重要。让你的百万次循环的内部部分每个循环快 12 个时钟周期可能会有所不同,因为现在它快了 1200 万个周期。如果你的中央循环中有 30 个函数调用,你让每个函数调用平均快 12 个周期,现在我们谈论的是数亿个周期,所以现在我们在现代处理器上只需要十分之一秒.