C++ 字符串构造性能

标签 c++ string performance

我想知道在将字符串传递给函数时(例如,插入到 vector 中),下面的代码在#1、#2 和#3 之间是否有任何区别。特别是在代码中处理数百万个字符串时。

std::vector<std::string> v;
std::string s("foo");
int i = 1;
v.push_back( s + "bar" + boost::lexical_cast<std::string>(i) );  // #1
v.push_back( std::string(s + "bar" + boost::lexical_cast<std::string>(i)) );  // #2
std::string s2 = s + "bar" + boost::lexical_cast<std::string>(i);
v.push_back(s2);  // #3

最佳答案

有了一个像样的优化器,#1 和#2 之间应该没有区别,但是#1 给你最大的机会让编译器实际进行临时消除。

但是,#3 包含一个命名的临时文件,因此它可能需要一个强大的优化器来检测它只是一个临时文件。

关于C++ 字符串构造性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12591609/

相关文章:

c++ - 具有随机数的唯一 vector

c++ - std::string 真的包装了一个 C char 数组吗?

swift - Swift 中字符串比较是如何发生的

javascript - 在 HTML 中加载大表,还有什么其他可能性?

c++ - 为什么 std::shuffle 和 std::sort 一样慢(甚至慢)?

c++ - 有没有办法创建一个公共(public)输出流对象以在控制台上打印并打印到 C++ 中的文件?

c++ - 连接两个 BSTR 的最佳方法是什么?

c++ - 最简单的解析电脑外网IP的方法?

c#比较字符串的最快方法

mysql 关注和转推功能