2

我有一段性能关键的代码,我正在考虑使用 CRTP。我的问题是大多数编译器能够在多大程度上优化代码。特别是我想知道编译器是否可以内联(在适当的时候)方法。例如,在以下代码中:

template <class Derived> 
struct Base
{
    void interface()
    {
        // ...
        static_cast<Derived*>(this)->implementation();
        // ...
    }
};

struct Derived : Base<Derived>
{
    void implementation();
};

object.interface()产生与调用相同的性能的调用object.implementation()

4

2 回答 2

4

压倒性的可能。当然,只有一种方法可以确定。

于 2011-06-08T17:38:20.480 回答
3

打开优化,如果编译器认为这值得内联,是的。

与动态分派相比,CRTP 的优点在于,从编译器的角度来看,它是一个常规函数调用。

于 2011-06-08T17:38:58.103 回答