首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++:从C++11中内存效率的角度返回字符串OK吗?

C++:从C++11中内存效率的角度返回字符串OK吗?
EN

Stack Overflow用户
提问于 2014-05-26 14:21:12
回答 2查看 192关注 0票数 2

从性能上讲,从string中的任意函数返回C++11可以吗?如果不推荐“直接返回”字符串,那么返回字符串的首选方法是什么?

C++中的字符串不进行引用计数,因为标准禁止这种做法。从我(可能不知情)的角度来看,这意味着一个字符串将由复制构造函数返回,从而产生一个可能较大的memcpy。是这样的吗?

将函数定义为string MyClass::makeString(...)而不是像void MyClass::makeString(string & ret, ...)这样的函数是非常简单和清晰的。另一方面,从性能的角度来看,后一种方法似乎更好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-26 14:29:39

当您从将字符串声明为本地非静态变量的函数返回std::string时,编译器可以积极地优化代码,以便很少或根本不进行复制。当涉及到字符串时,您不应该担心这对性能的影响。

即使在您确信会有大量复制的情况下,在分析器指出特定代码是低效率的来源之前,也不应该担心效果。在我的经验中,这种情况很少发生:一般来说,在效率低于标准的算法上浪费的CPU时间比在样板问题上浪费的要多得多,例如复制一个或两个额外的字符串。

票数 3
EN

Stack Overflow用户

发布于 2014-05-26 14:23:01

如果你在使用C++11,是的,没关系。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23872272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档