C++ SSO优化与性能测试
本篇文章将会引入两个问题,看看大家能答得上来不?
1.下面代码性能上有没有区别?
std::string s1("hello world hel");
std::string s2("hello world helo");
2.sizeof(std::string)是多少?
这里主要考察大家对C++ STL的string SSO优化是否了解,如果你不知道,欢迎继续阅读本篇文章,接下来的内容中将会引入benchmark进行测试验证与源码分析,带领大家揭秘性能优化。
由于这两个答案在g++(libstdc++)与clang(libc++)上的结果不一样,所以这里会分别进行分析。
注:本篇文章首发于星球,欢迎关注获取本文更多学习资料。
1.g++(libstdc++)
g++的源码我们以g++-10为例,详细代码可以戳这个github地址,这里列出比较核心的代码。