1、直接使用字符串相加


std::string a = "hello";

std::string b = "hello";

for(int i = 0; i < 100; ++i)

{

	a = b + a;

}

2、使用insert函数


std::string a = "hello";

for(int i = 0; i < 100; ++i)

{

	a.insert(0, "hello");

}

比较:通过Quick C++ Benchmarks 可得到结果


static void StringCreation(benchmark::State& state) {

  // Code inside this loop is measured repeatedly

  std::string x = "hello";

  for (auto _ : state) {

    x.insert(0,"hello");

    // Make sure the variable is not optimized away by compiler

    benchmark::DoNotOptimize(x);

  }

}

// Register the function as a benchmark

BENCHMARK(StringCreation);



static void StringCopy(benchmark::State& state) {

  // Code before the loop is not measured

  std::string x = "hello";

  for (auto _ : state) {

    x = "hello" + x;

  }

}

BENCHMARK(StringCopy);



image