相关疑难解决方法(0)

"想要速度?通过价值"是多么真实

如我错了请纠正我.说我有:

struct X
{
    std::string mem_name;

    X(std::string name)
        : mem_name(std::move(name)) 
    {}
    ...
};
struct Y
{
    std::string mem_name;

    Y(const std::string &name)
        : mem_name(name) 
    {}
    ...
};
Run Code Online (Sandbox Code Playgroud)

Xctor中,name显然是传递给任何参数的副本X,X调用std::string初始化的移动mem_name,对吧?

让我们称之为X*复制然后移动 ; 两个操作:COPY,MOVE.

Y's ctor中,name是一个const ref,这意味着没有元素的实际副本,因为我们直接处理从Y需要创建对象的地方传递的参数.但是,我们复制name到初始化mem_nameY; 一个操作:COPY.因此它应该更快(对我来说更好)?

在Scott Meyer的GN13演讲中(围绕时间框架8:10和8:56),他谈到了"想要速度?通过价值传递",我想知道在传递参数时是否有任何性能差异或损失(或者字符串是准确的)通过引用和传递值"以获得速度?"

我知道按值传递参数可能很昂贵,特别是在处理大数据时.

也许(显然?)我的谈话中缺少一些东西?

c++ c++11

45
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×1

c++11 ×1