本节介绍c++字符串优化的相关知识。c++中string对性能的影响比较大,因为string的很多操作都需要重新分配内存,进而影响程序性能。
接下来通过代码来展示优化的小技巧
#include <iostream>
#include <string>
static int m_times = 0;
//重写new操作符,用来统计分配内存的次数
void* operator new(size_t size)
{
m_times++;
return malloc(size);
}
int main() {
std::string name = "pcop_learing";
std::string s1 = name.substr(0, 4);
std::cout << s1 << std::endl;
std::cout << m_times << "\n"; //此种情况下分配两次,因为substr会创建一个新的string来完成
}
用string_view来替换substr,string_view是通过内存试图来操作,简单说就是还在在原来的内存进行操作,取指定内存位置的值。?string_view是c++17中的特性。
#include <iostream>
#include <string>
static int m_times = 0;
//重写new操作符,用来统计分配内存的次数
void* operator new(size_t size)
{
m_times++;
return malloc(size);
}
int main() {
std::string name = "pcop_learing";
std::string_view s1(name.c_str(), 4);
std::cout << s1 << std::endl;
std::cout << m_times << "\n"; //此种情况下分配1次,因为string_view是在原来name的内存空间完成
}