When you reach for a smart pointer, std::unique_ptr should generally be the one closest at hand. It’s reasonable to assume that, by default, std::unique_ptrs are the same size as raw pointers, and for most operations (including dereferencing), they execute exactly the same instructions. This means you can use them even in situations where memory and cycles are tight. If a raw pointer is small enough and fast enough for you, a std::unique_ptr almost certainly is, too.
-Scott Meyers (Effective Modern C++)
How the bold part can be true, it takes two phases to find the raw ptr in smart ptr and then call the method. How they can be equally fast?